کارهای Google Workspace را با API Gemini به صورت خودکار انجام دهید

1. قبل از شروع

در این لبه کد، می‌آموزید که چگونه وظایف Google Workspace را با ویژگی‌های فراخوانی عملکرد و چند وجهی Gemini API خودکار کنید.

پیش نیازها

  • آشنایی اولیه با Apps Script، JavaScript یا زبان برنامه نویسی مشابه

آنچه یاد می گیرید

  • نحوه استفاده از قابلیت فراخوانی عملکرد و ویژگی‌های چند وجهی Gemini API.
  • چگونه چندین تماس API Gemini را با هم زنجیره کنیم.
  • نحوه خودکارسازی وظایف Google Workspace با Gemini API.

آنچه شما نیاز دارید

  • یک مرورگر وب
  • یک اکانت جیمیل یا یک حساب Google Workspace که تنظیمات خاص Gemini API را اجرا کرده است.
  • اتصالی از یک منطقه پشتیبانی شده برای Gemini API.
  • اختیاری: یک رابط خط فرمان با برنامه curl برای آزمایش درخواست های مستقیم API.

کد کامل این کد لبه در کتاب آشپزی Gemini API در GitHub موجود است. اگر به کد تکمیل شده نیاز دارید آن را بررسی کنید.

2. Gemini API را راه اندازی کنید

درباره جمینی

مدل‌های Gemini بزرگترین و تواناترین خانواده مدل‌های هوش مصنوعی گوگل هستند. برای استفاده از این مدل ها در برنامه های خود، می توانید از Gemini API استفاده کنید. همچنین می‌توانید Gemini API را در Google AI Studio امتحان کنید، یک رابط وب برای API که در آن می‌توانید درخواست‌ها را امتحان کنید، تنظیمات مدل را تغییر دهید و مدل‌های سفارشی را بدون نوشتن کد تنظیم کنید.

یک کلید بگیر

اختیاری: کلید خود را تست کنید

اگر به یک خط فرمان با curl دسترسی دارید، کلید خود را به خط اول بلوک زیر اضافه کنید و سپس آن را در ترمینال خود اجرا کنید تا کلید API را آزمایش کنید.

export GOOGLE_API_KEY=Paste_your_API_key_here

curl "https://generativelanguage.googleapis.com/v1beta/models?key=${GOOGLE_API_KEY}"

باید لیستی از مدل ها را با فرمت JSON مشاهده کنید، مانند models/gemini-1.0-pro. این به این معنی است که کار کرده است.

3. اختیاری: درخواستی را به Gemini API ارسال کنید

در این مرحله اختیاری، قبل از افزودن آن به برنامه Apps Script، از Gemini API درخواست می‌کنید تا بهتر بفهمید تولید محتوا چگونه کار می‌کند.

در مورد مدل ها

Gemini API تعدادی مدل ارائه می دهد که دارای قابلیت ها و محدودیت های متفاوتی هستند. هر یک از مدل ها به همراه قابلیت هایشان در صفحه مدل های جمینی فهرست شده اند.

اولین درخواست شما

برای اینکه Gemini API یک درخواست متنی را تکمیل کند، یک درخواست JSON ایجاد می‌کنید و آن را به نقطه پایانی REST API ارسال می‌کنید.

برای انجام این کار، این مراحل را دنبال کنید:

  1. در یک فایل جدید، درخواست JSON زیر را وارد کنید:
{
  contents: [
   {
     parts: [
       { text: 'The most important aspects of a persuasive presentation are:' }
     ]
   }
 ]
}

درخواست JSON شامل دستور زیر است: The most important aspects of a persuasive presentation are: . مدل این دستورالعمل را کامل می کند و نتیجه را مستقیماً به شما می دهد.

درخواست JSON دارای سه فیلد سطح بالا برای پر کردن است: contents ، generationConfig ، و safetySettings . فقط contents مورد نیاز است. بقیه مکانیسم هایی را برای کنترل خروجی فراهم می کنند.

  1. این JSON را در یک فایل presentation.txt ذخیره کنید و سپس آن را مستقیماً ارسال می‌کنید تا به این صورت curl :
curl -H 'Content-Type: application/json' -X POST -d @presentation.txt \
  'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key='${GOOGLE_API_KEY}

در این مثال شما مقادیر زیر را در URL تنظیم می کنید:

  • v1beta نسخه API را مشخص می کند.
  • gemini-1.0-pro-latest Gemini 1.0 Pro را به عنوان مدل مشخص می کند و از آخرین عکس فوری استفاده می کند.
  • generateContent متد API را که فراخوانی می کنید مشخص می کند.

شما باید نتایج مشابه زیر را ببینید:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "* **Credibility:** The audience must trust that you are an expert on the subject matter and that you have their best interests at heart.\n* **Clearness:** Your message must be easy to understand and follow. Avoid using jargon or technical terms that your audience may not be familiar with.\n* **Concreteness:** Use specific examples and data to support your arguments. Avoid making vague or general claims.\n* **Emotional appeal:** In addition to appealing to the audience's logical side, you should also try to connect with them on an emotional level. Use storytelling, humor, and personal anecdotes to make your points more memorable and engaging.\n* **Strong closing:** End your presentation with a strong call to action. Tell the audience what you want them to do and why it is important for them to do it."
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [...]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [...]
  }
}

برای خوانایی، در اینجا خروجی ترمینال به طور منظم فرمت شده است:

  • اعتبار: مخاطب باید اطمینان داشته باشد که شما متخصص موضوع هستید و بهترین علایق او را در دل دارید.
  • وضوح: پیام شما باید به راحتی قابل درک و پیگیری باشد. از استفاده از اصطلاحات تخصصی یا اصطلاحات فنی که ممکن است مخاطبان شما با آنها آشنایی نداشته باشند، خودداری کنید.
  • واضح بودن: از مثال ها و داده های خاص برای پشتیبانی از استدلال های خود استفاده کنید. از بیان ادعاهای مبهم یا کلی بپرهیزید.
  • جذابیت عاطفی: علاوه بر جذابیت برای جنبه منطقی مخاطب، باید سعی کنید در سطح احساسی نیز با او ارتباط برقرار کنید. از داستان سرایی، طنز و حکایات شخصی استفاده کنید تا نکات خود را به یاد ماندنی تر و جذاب تر کنید.
  • بسته شدن قوی: ارائه خود را با یک فراخوان قوی برای اقدام پایان دهید. به مخاطب بگویید می خواهید چه کاری انجام دهند و چرا انجام آن برای او مهم است.

برای کسب اطلاعات بیشتر در مورد سایر تنظیمات، از جمله generationConfig و safetySettings ، به دستورالعمل‌های اعلان و ایمنی مراجعه کنید.

4. از Apps Script با Gemini API تماس بگیرید

  1. از script.new دیدن کنید و یک فایل code.gs Apps Script به طور خودکار برای شما ایجاد می شود.
  2. نشانگر خود را روی فایل code.gs نگه دارید و سپس کلیک کنید 8bfe57773be886ab.png > تغییر نام .
  3. نام فایل را به utils.gs تغییر دهید.
  4. در فایل، تابع myFunction را حذف کنید تا فایل خالی شود.

کلید API خود را به پروژه اضافه کنید

  1. در منوی پیمایش، تنظیمات پروژه را انتخاب کنید.
  2. در قسمت خصوصیات اسکریپت ، روی افزودن ویژگی اسکریپت کلیک کنید.
  3. در قسمت Property ، GOOGLE_API_KEY را وارد کنید.
  4. در قسمت Value ، کلید API خود را از Google AI Studio وارد کنید.

fcfe205a93879c49.png

  1. روی ذخیره خصوصیات اسکریپت کلیک کنید.
  2. به ویرایشگر برگردید.

کد Gemini API را اضافه کنید

در فایل utils.gs مراحل زیر را دنبال کنید:

کلید API و نقطه پایانی را تنظیم کنید:

const properties = PropertiesService.getScriptProperties().getProperties();
const geminiApiKey = properties['GOOGLE_API_KEY'];
const geminiEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key=${geminiApiKey}`;
  1. تابع زیر را اضافه کنید که Gemini API را با یک اعلان خاص فراخوانی می کند:
function callGemini(prompt, temperature=0) {
  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
        ]
      }
    ], 
    "generationConfig":  {
      "temperature": temperature,
    },
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["text"];
  return content;
}
  1. تابع زیر را که دستور را تنظیم می کند اضافه کنید:
function testGemini() {
  const prompt = "The best thing since sliced bread is";
  const output = callGemini(prompt);
  console.log(prompt, output);
}

تستش کن

  1. کلیک کنید 76113423d1f91775.png ذخیره کنید.
  2. testGemini در لیست کشویی تابع انتخاب کرده و کلیک کنید 5b9034ff679c8761.png .
  3. مجوزهای لازم را بپذیرید. کد شما باید اجرا شود و باید مقداری خروجی کنسول همراه با نتایج را در گزارش اجرا ببینید.

گزارش اجرا

کار کرد!

5. Gemini API را با تصاویر فراخوانی کنید

یکی از قدرتمندترین ویژگی های مدل های خانواده جمینی، پشتیبانی از ورودی چند وجهی است، به این معنی که شما می توانید چیزی بیش از متن ارائه دهید! در این بخش تابعی را اضافه می کنید که Gemini API را با یک تصویر فراخوانی می کند.

  • در بالای فایل utils.gs پس از اعلان موجود const geminiEndpoint ، خط زیر را اضافه کنید:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

کد Gemini Vision را اضافه کنید

  1. برای فراخوانی این نقطه پایانی که به تازگی اضافه شده است، یک تابع به فایل utils.gs اضافه کنید:
function callGeminiProVision(prompt, image, temperature=0) {
  const imageData = Utilities.base64Encode(image.getAs('image/png').getBytes());

  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": imageData
            }
          }          
        ]
      }
    ], 
    "generationConfig":  {
      "temperature": temperature,
    },
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiProVisionEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["text"];
  return content;
}
  1. تابع تست زیر را اضافه کنید:
function testGeminiVision() {
  const prompt = "Provide a fun fact about this object.";
  const image = UrlFetchApp.fetch('https://storage.googleapis.com/generativeai-downloads/images/instrument.jpg').getBlob();
  const output = callGeminiProVision(prompt, image);
  console.log(prompt, output);
}

این تابع یک تصویر آزمایشی را از اینترنت بارگیری می کند و آن را به تابعی که شما تعریف کرده اید ارسال می کند. بعداً، آن را برای استفاده از نمودار از یک صفحه گسترده سیم‌کشی می‌کنید، بنابراین این فقط یک آزمایش است.

تستش کن

  • تابع testGeminiVision را ذخیره و اجرا کنید و سپس خروجی را بررسی کنید.

849c6728bfb5ec52.png

6. Gemini API را با ابزار تماس بگیرید

علاوه بر متن و تصاویر، می‌توانید دسترسی به ابزارهای موجود در پیام‌های خود را نیز فراهم کنید.

کد مدیریت ابزار را اضافه کنید

  • تابعی را به فایل utils.gs اضافه کنید که مشخصات ابزار را می پذیرد:
function callGeminiWithTools(prompt, tools, temperature=0) {
  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
        ]
      }
    ], 
    "tools" : tools,
    "generationConfig":  {
      "temperature": temperature,
    },    
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["functionCall"];
  return content;
}

برای اطلاعات بیشتر درباره این طرح و فیلدهای موجود، به مرجع FunctionDeclaration API مراجعه کنید.

تستش کن

  1. ابزاری را تعریف کنید که مدل بتواند از آن برای یافتن تاریخ و زمان فعلی استفاده کند:
function testGeminiTools() {
  const prompt = "Tell me how many days there are left in this month.";
  const tools = {
    "function_declarations": [
      {
        "name": "datetime",
        "description": "Returns the current date and time as a formatted string.",
        "parameters": {
          "type": "string"
        }
      }
    ]
  };
  const output = callGeminiWithTools(prompt, tools);
  console.log(prompt, output);
}

فرمت مورد استفاده در اینجا طرح FunctionDeclaration است. شما در واقع تابع تاریخ-زمان را فراخوانی نمی کنید. شما فقط نشانه ای دریافت می کنید که مدل درخواست فراخوانی تابع کرده است. شما تماس های تابع را در مرحله بعدی مدیریت می کنید.

  1. تابع testGeminiTools را ذخیره و اجرا کنید تا خروجی را ببینید.

گزارش اجرا

7. مروری بر ادغام های آزمایشی با Google Workspace

اکنون که فهمیدید فراخوانی تابع چگونه کار می کند، می توانید به راحتی قابلیت های مدل Gemini را به سرویس های دیگر گسترش دهید. در چند بخش بعدی، ادغام هایی را در برابر محصولات Google Workspace، مانند Google Drive، Google Slides و Google Sheets ایجاد می کنید. در اینجا یک نمودار ساده آمده است:

3 ابزار

در سطح بالایی، هنگامی که یک درخواست کاربر وارد می شود، از فراخوانی تابع Gemini API برای تعیین ابزار مورد استفاده استفاده می کنید. شما سه ابزار می سازید که می توانند کارهای زیر را انجام دهند:

  • یک جلسه تنظیم کنید . تابع setupMeeting() در نمودار از Gemini 1.0 Pro API برای خلاصه کردن یک وبلاگ در Google Drive و اضافه کردن خلاصه به جلسه جدید ایجاد شده در تقویم Google استفاده می کند.
  • بر اساس اطلاعات آماری نمودار، یک ایمیل پیش‌نویس کنید . تابع draftEmail() در نمودار، Gemini 1.0 Pro Vision را برای تجزیه و تحلیل نمودار در Google Sheets و ایجاد ایمیل در Gmail بر اساس تجزیه و تحلیل فراخوانی می کند.
  • یک عرشه اسکلت ایجاد کنید . تابع createDeck() در نمودار، Gemini 1.0 Pro را فراخوانی می‌کند تا نقاط گلوله‌ای را برای یک عرشه در Google Slides جمع‌آوری کند.

برای هر ابزار، باید سه کار زیر را انجام دهید:

  1. تعیین کنید که آیا پاسخ فراخوانی تابع Gemini API درخواست فراخوانی آن ابزار خاص در بلوک if...else یا خیر.
  2. برای پیاده سازی عملکرد ابزار، تابع واقعی را اضافه کنید.
  3. ابزار را با Gemini API اعلام کنید تا مدل Gemini از وجود ابزار مطلع شود و بتواند پاسخ فراخوانی صحیح تابع را برگرداند.

8. یک جلسه با Apps Script تنظیم کنید

ابتدا، تنظیم یک جلسه را در تقویم Google به طور خودکار انجام می دهید، اما توضیحی نیز اضافه می کنید که خلاصه ای از یک فایل در Google Drive است.

برای انجام این کار، این مراحل را دنبال کنید:

  1. این فایل متنی که نسخه متنی وبلاگ راه اندازی Gemini 1.5 Pro می باشد را دانلود کنید .
  2. فایل را در پوشه ریشه خود در گوگل درایو آپلود کنید.
  3. در ویرایشگر، یک فایل main.gs ایجاد کنید و سپس کد زیر را اضافه کنید:
function main() {
  const userQuery = "Set up a meeting at 10AM tomorrow with Helen to discuss the news in the Gemini-blog.txt file.";

  var tool_use = callGeminiWithTools(userQuery, WORKSPACE_TOOLS);
  Logger.log(tool_use);
  
  if(tool_use['name'] == "setupMeeting") {
    setupMeeting(tool_use['args']['time'], tool_use['args']['recipient'], tool_use['args']['filename']);
    Logger.log("Your meeting has been set up.");
 }
  else
    Logger.log("no proper tool found");
}

در اینجا، شما قابلیت فراخوانی تابع Gemini API را فراخوانی می کنید. بعد، باید تابع ابزار را تعریف کنید.

  1. در سمت چپ ویرایشگر، در کنار Services ، روی + Add a service > Google Calendar API > Add کلیک کنید. این سرویس پیشرفته Google Calendar را فعال می‌کند، که باید بعداً برای برخی از APIهای پیشرفته از آن استفاده کنید.

یک سرویس اضافه کنید

  1. در فایل utils.gs کد زیر را اضافه کنید:
function attachFileToMeeting(event, file, fileName) {
  // Get the iCal ID for the event.
  const iCalEventId = event.getId();

  // Log the ID and title for debugging.
  console.log(`iCal event ID: ${iCalEventId}`);
  console.log(`event Title: ${event.getTitle()}`);

  // Set up the options for listing the event with the advanced Google Calendar service.
  const options = {
      iCalUID: iCalEventId,
    };

  // Use the primary calendar as the calendar ID to list events.
  const calendarId = 'primary';

  // Use the advanced Google Calendar service to list the event.
  const calEvents = Calendar.Events.list(calendarId, options);

  // Get the Calendar ID used by the advanced Google Calendar service.
  const eventId = calEvents.items[0].id;

  // Get the file URL for the attachment.
  const fileUrl = file.getUrl();

    // Set up the patch options to add the file.
    var patch = {
      attachments: [{
        'fileUrl': fileUrl,
        'title': fileName
      }]
    };

    // Patch the event to add the file as an attachment.
    Calendar.Events.patch(patch, 'primary', eventId, {"supportsAttachments": true});  
}

function setupMeeting(time, recipient, filename) {
  const files = DriveApp.getFilesByName(filename);
  const file = files.next();
  const blogContent = file.getAs("text/*").getDataAsString();
  
  var geminiOutput = callGemini("Give me a really short title of this blog and a summary with less than three sentences. Please return the result as a JSON with two fields: title and summary. \n" +  blogContent);
  // The Gemini model likes to enclose the JSON with ```json and ```
  geminiOutput = JSON.parse(geminiOutput.replace(/```(?:json|)/g, ""));  
  const title = geminiOutput['title'];
  const fileSummary = geminiOutput['summary'];

  const event = CalendarApp.getDefaultCalendar().createEventFromDescription(`meet ${recipient} at ${time} to discuss "${title}"`); 
  event.setDescription(fileSummary);
  attachFileToMeeting(event, file, filename);
}

این کد کارهای زیر را انجام می دهد:

  • تابع setupMeeting() از طریق Google Drive شما می رود و فایل Gemini-blog.txt را پیدا می کند. این نام فایل به طور خودکار با فراخوانی تابع Gemini API در مرحله 3 بازگردانده می شود.
  • تابع setupMeeting() Gemini API را فراخوانی می کند تا محتوای فایل را خلاصه کند، با استفاده از توضیحات فرم آزاد، جلسه ای را با CalendarApp تنظیم می کند و خلاصه را به جلسه اضافه می کند.
  • تابع setupMeeting() تابع attachFileToMeeting() را فراخوانی می کند تا از سرویس پیشرفته Google Calendar برای پیوست کردن فایل وبلاگ به جلسه استفاده کند.
  1. در بالای فایل utils.gs ، کد زیر را اضافه کنید:
const WORKSPACE_TOOLS = {
 "function_declarations": [
   {
     "name": "setupMeeting",
     "description": "Sets up a meeting in Google Calendar.",
     "parameters": {
       "type": "object",
       "properties": {
         "time": {
           "type": "string",
           "description": "The time of the meeting."
         },
         "recipient": {
           "type": "string",
           "description": "The name of the recipient."
         },   
         "filename": {
           "type": "string",
           "description": "The name of the file."
         },                     
       },
       "required": [
         "time",
         "recipient",
         "filename"
       ]
     }
   },
   // You add tools here.        
 ]
};
  1. در ویرایشگر به فایل main.gs برگردید و کلیک کنید 5b9034ff679c8761.png .
  2. اگر Google Workspace از شما اجازه اجرای اسکریپت را خواست، روی OK کلیک کنید.

در عرض چند ثانیه، گزارش اجرا پیامی را نمایش می دهد که به شما اطلاع می دهد که جلسه شما راه اندازی شده است.

  1. در Google Calendar، به دنبال جلسه با خلاصه و پیوست بگردید.

دعوت به جلسه

9. یک ایمیل با Apps Script تهیه کنید

در مرحله بعد، تهیه پیش نویس ایمیل در Gmail را خودکار می کنید. این سناریو است: فرض کنید تجزیه و تحلیل داده ها را در Google Sheets انجام می دهید. شما همه اعداد را در جای خود قرار می دهید و یک نمودار ایجاد می کنید. شما می خواهید از Gemini Pro Vision API برای پیش نویس ایمیل بر اساس نمودار استفاده کنید.

برای انجام این کار، این مراحل را دنبال کنید:

  1. این برگه را باز کنید و روی File -> Make a copy کلیک کنید.
  2. در کادر متنی نام کادر گفتگوی کپی سند ، نام پیش‌فرض Copy of CollegeExpenses با CollegeExpenses جایگزین کنید.
  3. در فایل main.gs ، کوئری کاربری قبلی را با یک کوئری جدید جایگزین کنید و سپس کد زیر را به عبارت if...else اضافه کنید:
function main() {
  // const userQuery = "Set up a meeting at 5PM with Helen to discuss the news in the Gemini-1.5-blog.txt file.";  
  const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";

  if(...) {...}
  // Add this code
  else if(tool_use['name'] == "draftEmail") {
    draftEmail(tool_use['args']['sheet_name'], tool_use['args']['recipient']);
    Logger.log("Check your Gmail to review the draft");
  }
  else {...}

}
  1. در فایل utils.gs کد زیر را اضافه کنید:
function draftEmail(sheet_name, recipient) {
  
  const prompt = `Compose the email body for ${recipient} with your insights for this chart. Use information in this chart only and do not do historical comparisons. Be concise.`;

  var files = DriveApp.getFilesByName(sheet_name);
  var sheet = SpreadsheetApp.openById(files.next().getId()).getSheetByName("Sheet1");
  var expenseChart = sheet.getCharts()[0];

  var chartFile = DriveApp.createFile(expenseChart.getBlob().setName("ExpenseChart.png"));
  var emailBody = callGeminiProVision(prompt, expenseChart);
  GmailApp.createDraft(recipient+"@demo-email-provider.com", "College expenses", emailBody, {
      attachments: [chartFile.getAs(MimeType.PNG)],
      name: 'myname'
  });
}

این تابع نمودار هزینه دانشگاه را از برگه بازیابی می کند و برای پیش نویس ایمیل به Gemini Pro Vision ارسال می کند. Gemini Pro Vision اطلاعات را از نمودار استخراج می کند و متن ایمیل را از طرف شما تهیه می کند.

  1. در فایل utils.gs ، پس از نظر You add tools here کد زیر را به شی WORKSPACE_TOOLS اضافه کنید:
  WORKSPACE_TOOLS = {
    "function_declarations": [
      // You add tools here.

      {
        "name": "draftEmail",
        "description": "Write an email by analyzing data or charts in a Google Sheets file.",
        "parameters": {
          "type": "object",
          "properties": {
            "sheet_name": {
              "type": "string",
              "description": "The name of the sheet to analyze."
            },
            "recipient": {
              "type": "string",
              "description": "The name of the recipient."
            },            
          },
          "required": [
            "sheet_name",
            "recipient"
          ]
        }
      },   


    ]
  };
  1. در ویرایشگر، به فایل main.gs برگردید و سپس کلیک کنید 5b9034ff679c8761.png .
  2. بعد از 10 تا 20 ثانیه، جیمیل خود را باز کنید. شما باید یک پیش نویس ایمیل مانند این را ببینید:

می‌توانید پیش‌نویس ایمیل را قبل از ارسال آن اصلاح کنید. ایمیل کاملاً توسط Gemini Pro Vision نوشته می‌شود، پس از اینکه یک دستور کوتاه و نمودار به آن دادید.

10. یک عرشه اسکلت با Apps Script ایجاد کنید

در مرحله بعد، ایجاد یک عرشه اسکلت در Google Slides را با برنامه Apps Script به طور خودکار انجام می دهید.

برای انجام این کار، این مراحل را دنبال کنید:

  1. در فایل main.gs ، کوئری کاربری قبلی را با یک عبارت جدید جایگزین کنید و کد زیر را به عبارت if...else اضافه کنید:
function main() {
  // const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
  const userQuery = "Help me put together a deck about water conservation.";

  if(...) {...}
  // Add this code
  else if(tool_use['name'] == 'createDeck') {
    deckURL = createDeck(tool_use['args']['topic']);
    Logger.log("Deck URL: " + deckURL);
  }
  else {...}

}
  1. در فایل utils.gs کد زیر را اضافه کنید:
function createDeck(topic) {
  const prompt = `I'm preparing a ${NUM_SLIDES}-slide deck to discuss ${topic}. Please help me brainstorm and generate main bullet points for each slide. Keep the title of each slide short. Please produce the result as a valid JSON so that I can pass it to other APIs.`;
  
  var geminiOutput = callGemini(prompt, 0.4);
  // The Gemini model likes to enclose the JSON with ```json and ```
  geminiOutput = geminiOutput.replace(/```(?:json|)/g, "");
  const bulletPoints = JSON.parse(geminiOutput);
    
  // Create a Google Slides presentation.
  const presentation = SlidesApp.create("My New Presentation");

  // Set up the opening slide.
  var slide = presentation.getSlides()[0]; 
  var shapes = slide.getShapes();
  shapes[0].getText().setText(topic);

  var body;
  for (var i = 0; i < NUM_SLIDES; i++) {
      slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
      shapes = slide.getShapes();
      // Set title.
      shapes[0].getText().setText(bulletPoints['slides'][i]['title']);
  
      // Set body.
      body = "";
      for (var j = 0; j < bulletPoints['slides'][i]['bullets'].length; j++) {
        body += '* ' + bulletPoints['slides'][i]['bullets'][j] + '\n';
      }
      shapes[1].getText().setText(body);
  } 

  return presentation.getUrl();
}

این تابع Gemini API را فراخوانی می کند تا یک موضوع خاص را طوفان فکری کند، نقاط گلوله را در قالب برگرداند

از JSON، و سپس از Apps Script برای پر کردن یک عرشه اسکلت استفاده کنید.

  1. در فایل utils.gs ، پس از نظر You add tools here کد زیر را به شی WORKSPACE_TOOLS اضافه کنید:
  WORKSPACE_TOOLS = {
    "function_declarations": [
      // You add tools here.

      {
        "name": "createDeck",
        "description": "Build a simple presentation deck with Google Slides and return the URL.",
        "parameters": {
          "type": "object",
          "properties": {
            "topic": {
              "type": "string",
              "description": "The topic that the presentation is about."
            },
          },
          "required": [
            "topic"
          ]
        }
      },


    ]
  };
  1. در بالای فایل utils.gs ، ثابت زیر را تعریف کنید:
const NUM_SLIDES = 3;

این تعداد اسلایدهایی است که مدل جمینی علاوه بر اسلاید افتتاحیه ایجاد می کند.

  1. در ویرایشگر، به فایل main.gs برگردید و سپس کلیک کنید 5b9034ff679c8761.png . در عرض چند ثانیه، یک URL ارائه را در گزارش اجرا مشاهده می کنید.
  2. از مرورگر خود برای باز کردن URL استفاده کنید. شما باید یک عرشه اسکلت پر از نقاط گلوله را ببینید.

عرشه پیش نویس

11. ایده هایی برای کشف

فراتر از این سه ادغام، می توانید ایده های زیر را کشف کنید:

  • یک ربات چت در Google Chat بسازید . یکی از محبوب ترین موارد استفاده برای مدل های زبان بزرگ (LLM) ساخت ربات چت است. با Gemini API، ساختن یک ربات چت برای Google Chat آسان است. برای اطلاعات بیشتر، Google Chat API و codelab Build apps for Google Chat with Gemini را ببینید.
  • Retrieval-Augmented Generation (RAG) با داده‌های خودتان در Google Drive یا Keep . در این کد لبه، شما فقط از یک فایل متنی برای خلاصه سازی استفاده می کنید. با این حال، می‌توانید از محتوای Google Drive و Keep مانند یادداشت‌ها، فایل‌های PDF و تصاویر خود با Gemini API، یک پایگاه داده برداری، و در صورت تمایل، یک ابزار هماهنگ‌سازی مانند LangChain برای انجام RAG و شخصی‌سازی استفاده کنید. پاسخ مدل بر اساس داده های شما
  • از قابلیت فراخوانی چند نوبتی Gemini API استفاده کنید . فراخوانی عملکرد Gemini API به یک نوبت محدود نمی شود و می توانید برای کارهای پیچیده تر هم تابع چند نوبتی را فراخوانی کنید .
  • فراتر از Google Workspace بروید . اکنون که نحوه ادغام Gemini API با Google Workspace را می‌دانید، می‌توانید از Google Workspace فراتر رفته و از سایر APIهای جهان استفاده کنید.

12. تبریک می گویم

شما در مورد قابلیت های چند وجهی و فراخوانی عملکرد Gemini API آشنا شدید. شما از آنها برای خودکار کردن برخی از وظایف Google Workspace با Apps Script استفاده کردید!

بیشتر بدانید