Mengotomatiskan tugas Google Workspace dengan Gemini API

1. Sebelum memulai

Dalam codelab ini, Anda akan mempelajari cara mengotomatiskan tugas Google Workspace dengan fitur pemanggilan fungsi dan multi-modalitas Gemini API.

Prasyarat

  • Pemahaman dasar tentang Apps Script, JavaScript, atau bahasa pemrograman serupa

Yang Anda pelajari

  • Cara memanfaatkan fitur panggilan fungsi dan multi-modalitas Gemini API.
  • Cara menggabungkan beberapa panggilan Gemini API.
  • Cara mengotomatiskan tugas Google Workspace dengan Gemini API.

Yang Anda perlukan

  • Browser web.
  • Akun Gmail. Atau, Akun Google Workspace yang telah menerapkan penyiapan khusus Gemini API.
  • Koneksi dari wilayah yang didukung untuk Gemini API.
  • Opsional: Antarmuka command line dengan program curl untuk menguji permintaan API langsung.

Kode lengkap untuk codelab ini tersedia di Gemini API Cookbook di GitHub. Lihat jika Anda memerlukan kode yang telah selesai.

2. Menyiapkan Gemini API

Tentang Gemini

Model Gemini adalah serangkaian model AI terbesar dan tercanggih dari Google. Untuk memanfaatkan model ini di aplikasi Anda, Anda dapat menggunakan Gemini API. Anda juga dapat mencoba Gemini API di Google AI Studio, antarmuka web untuk API tempat Anda dapat mencoba perintah, menyesuaikan setelan model, dan menyetel model kustom tanpa menulis kode apa pun.

Dapatkan kunci

Opsional: Menguji kunci Anda

Jika Anda memiliki akses ke command line dengan curl, tambahkan kunci Anda ke baris pertama blok berikut, lalu jalankan di terminal untuk menguji kunci API.

export GOOGLE_API_KEY=Paste_your_API_key_here

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

Anda akan melihat daftar model dalam format JSON, seperti models/gemini-1.0-pro. Ini berarti berhasil.

3. Opsional: Buat permintaan ke Gemini API

Pada langkah opsional ini, Anda membuat permintaan ke Gemini API untuk lebih memahami cara kerja pembuatan konten sebelum menambahkannya ke aplikasi Apps Script.

Tentang model

Gemini API menyediakan sejumlah model yang memiliki kemampuan dan batasan yang berbeda. Setiap model dicantumkan beserta kemampuannya di halaman model Gemini.

Membuat permintaan pertama Anda

Agar Gemini API melengkapi perintah teks, Anda membuat permintaan JSON dan mengirimkannya ke endpoint REST API.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Dalam file baru, masukkan permintaan JSON berikut:
{
  contents: [
   {
     parts: [
       { text: 'The most important aspects of a persuasive presentation are:' }
     ]
   }
 ]
}

Permintaan JSON mencakup perintah berikut: The most important aspects of a persuasive presentation are:. Model akan menyelesaikan petunjuk ini dan memberikan hasilnya secara langsung kepada Anda.

Permintaan JSON memiliki tiga kolom tingkat teratas yang harus diisi: contents, generationConfig, dan safetySettings. Hanya contents yang diperlukan. Yang lainnya menyediakan mekanisme untuk mengontrol output.

  1. Simpan JSON ini dalam file presentation.txt, lalu teruskan langsung ke curl seperti ini:
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}

Dalam contoh ini, Anda menetapkan nilai berikut di URL:

  • v1beta menentukan versi API.
  • gemini-1.0-pro-latest menentukan Gemini 1.0 Pro sebagai model dan menggunakan snapshot terbaru.
  • generateContent menentukan metode API yang Anda panggil.

Anda akan melihat hasil yang mirip dengan berikut ini:

{
  "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": [...]
  }
}

Agar mudah dibaca, berikut output terminal yang diformat secara teratur:

  • Kredibilitas: Audiens harus percaya bahwa Anda adalah pakar di bidang tersebut dan Anda memiliki niat baik untuk mereka.
  • Kejelasan: Pesan Anda harus mudah dipahami dan diikuti. Hindari penggunaan jargon atau istilah teknis yang mungkin tidak dipahami audiens Anda.
  • Konkret: Gunakan contoh dan data spesifik untuk mendukung argumen Anda. Hindari membuat klaim yang tidak jelas atau umum.
  • Daya tarik emosional: Selain menarik perhatian audiens dari sisi logis, Anda juga harus mencoba terhubung dengan mereka dari sisi emosional. Gunakan penceritaan, humor, dan anekdot pribadi untuk membuat poin Anda lebih berkesan dan menarik.
  • Penutup yang kuat: Akhiri presentasi Anda dengan pesan ajakan yang kuat. Beri tahu audiens apa yang ingin Anda mereka lakukan dan mengapa penting bagi mereka untuk melakukannya.

Untuk mempelajari lebih lanjut setelan lainnya, termasuk generationConfig dan safetySettings, lihat panduan perintah dan keamanan.

4. Memanggil Gemini API dari Apps Script

  1. Buka script.new dan file Apps Script code.gs akan dibuat secara otomatis untuk Anda.
  2. Arahkan kursor ke file code.gs, lalu klik 8bfe57773be886ab.png > Ganti nama.
  3. Ubah nama file menjadi utils.gs.
  4. Di file, hapus fungsi myFunction sehingga file kosong.

Tambahkan kunci API Anda ke project

  1. Di menu navigasi, pilih Setelan project.
  2. Di bagian Properti skrip, klik Tambahkan properti skrip.
  3. Di bagian Property, masukkan GOOGLE_API_KEY.
  4. Di bagian Nilai, masukkan kunci API Anda dari Google AI Studio.

fcfe205a93879c49.png

  1. Klik Simpan properti skrip.
  2. Kembali ke editor.

Menambahkan kode Gemini API

Di file utils.gs, ikuti langkah-langkah berikut:

Siapkan kunci API dan endpoint:

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. Tambahkan fungsi berikut yang memanggil Gemini API dengan perintah tertentu:
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. Tambahkan fungsi berikut yang menetapkan perintah:
function testGemini() {
  const prompt = "The best thing since sliced bread is";
  const output = callGemini(prompt);
  console.log(prompt, output);
}

Melakukan pengujian

  1. Klik 76113423d1f91775.png Simpan.
  2. Pilih testGemini di menu dropdown fungsi, lalu klik 5b9034ff679c8761.png.
  3. Setujui izin yang diperlukan. Kode Anda akan berjalan dan Anda akan melihat beberapa output konsol dengan hasil di log eksekusi.

Log eksekusi

Berhasil!

5. Memanggil Gemini API dengan gambar

Salah satu fitur paling canggih dari rangkaian model Gemini adalah dukungan untuk input multi-modal, yang berarti Anda dapat memberikan lebih dari sekadar teks. Di bagian ini, Anda akan menambahkan fungsi yang memanggil Gemini API dengan gambar.

  • Di bagian atas file utils.gs setelah deklarasi const geminiEndpoint yang ada, tambahkan baris berikut:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

Menambahkan kode Gemini Vision

  1. Tambahkan fungsi ke file utils.gs untuk memanggil endpoint yang baru ditambahkan ini:
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. Tambahkan fungsi pengujian berikut:
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);
}

Fungsi ini memuat gambar pengujian dari internet dan meneruskannya ke fungsi yang Anda tentukan. Selanjutnya, Anda akan menghubungkannya untuk menggunakan diagram dari spreadsheet, jadi ini hanya pengujian.

Melakukan pengujian

  • Simpan dan jalankan fungsi testGeminiVision, lalu periksa output-nya.

849c6728bfb5ec52.png

6. Memanggil Gemini API dengan alat

Selain teks dan gambar, Anda juga dapat memberikan akses ke alat dalam perintah Anda.

Tambahkan kode penanganan alat

  • Tambahkan fungsi ke file utils.gs yang menerima spesifikasi alat:
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;
}

Untuk mengetahui informasi selengkapnya tentang skema ini dan kolom yang tersedia, lihat referensi API FunctionDeclaration.

Melakukan pengujian

  1. Tentukan alat yang dapat digunakan model untuk menemukan tanggal dan waktu saat ini:
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);
}

Format yang digunakan di sini adalah skema FunctionDeclaration. Anda sebenarnya tidak memanggil fungsi tanggal dan waktu. Anda hanya menerima indikasi bahwa model meminta panggilan fungsi. Anda akan menangani panggilan fungsi di langkah berikutnya.

  1. Simpan dan jalankan fungsi testGeminiTools untuk melihat output.

Log eksekusi

7. Ringkasan integrasi demo dengan Google Workspace

Setelah memahami cara kerja panggilan fungsi, Anda dapat dengan mudah memperluas kemampuan model Gemini ke layanan lain. Dalam beberapa bagian berikutnya, Anda akan membuat integrasi dengan produk Google Workspace, seperti Google Drive, Google Slide, dan Google Spreadsheet. Berikut diagram sederhananya:

3 alat

Secara umum, saat kueri pengguna masuk, Anda menggunakan panggilan fungsi Gemini API untuk menentukan alat mana yang akan digunakan. Anda akan membuat tiga alat yang dapat melakukan hal berikut:

  • Menyiapkan rapat. Fungsi setupMeeting() dalam diagram memanggil Gemini 1.0 Pro API untuk meringkas blog di Google Drive dan menambahkan ringkasan ke rapat yang baru dibuat di Google Kalender.
  • Buat draf email berdasarkan insight dari diagram. Fungsi draftEmail() dalam diagram memanggil Gemini 1.0 Pro Vision untuk menganalisis diagram di Google Spreadsheet dan menulis email di Gmail berdasarkan analisis tersebut.
  • Buat slide kerangka. Fungsi createDeck() dalam diagram memanggil Gemini 1.0 Pro untuk mencari ide poin-poin untuk presentasi di Google Slide.

Untuk setiap alat, Anda perlu melakukan tiga hal berikut:

  1. Tentukan apakah respons panggilan fungsi Gemini API meminta untuk memanggil alat tertentu tersebut dalam blok if...else.
  2. Tambahkan fungsi sebenarnya untuk menerapkan fungsi alat.
  3. Deklarasikan alat dengan Gemini API agar model Gemini mengetahui keberadaan alat tersebut dan dapat menampilkan respons panggilan fungsi yang benar.

8. Menyiapkan rapat dengan Apps Script

Pertama, Anda mengotomatiskan penyiapan rapat di Google Kalender, tetapi Anda juga menambahkan deskripsi, yang merupakan ringkasan file di Google Drive.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Download file teks ini, yang merupakan salinan teks dari blog peluncuran Gemini 1.5 Pro.
  2. Upload file ke folder root Anda di Google Drive.
  3. Di editor, buat file main.gs, lalu tambahkan kode berikut:
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");
}

Di sini, Anda memanggil kemampuan panggilan fungsi Gemini API. Selanjutnya, Anda perlu menentukan fungsi alat.

  1. Di sebelah kiri editor, di samping Layanan, klik + Tambahkan layanan > Google Calendar API > Tambahkan. Hal ini akan mengaktifkan layanan Google Kalender lanjutan, yang harus Anda gunakan untuk beberapa API lanjutan nanti.

Menambahkan layanan

  1. Di file utils.gs, tambahkan kode berikut:
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);
}

Kode ini melakukan hal berikut:

  • Fungsi setupMeeting() akan memeriksa Google Drive Anda dan menemukan file Gemini-blog.txt. Nama file ini otomatis ditampilkan oleh panggilan fungsi Gemini API di langkah #3.
  • Fungsi setupMeeting() memanggil Gemini API untuk meringkas konten file, menyiapkan rapat dengan CalendarApp menggunakan deskripsi bentuk bebas, dan menambahkan ringkasan ke rapat.
  • Fungsi setupMeeting() memanggil fungsi attachFileToMeeting() untuk menggunakan layanan Google Kalender lanjutan guna melampirkan file blog ke rapat.
  1. Di bagian atas file utils.gs, tambahkan kode berikut:
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. Di editor, kembali ke file main.gs, lalu klik 5b9034ff679c8761.png.
  2. Jika Google Workspace meminta izin untuk menjalankan skrip, klik Oke.

Dalam beberapa detik, log eksekusi akan menampilkan pesan yang memberi tahu Anda bahwa rapat telah disiapkan.

  1. Di Google Kalender, cari rapat dengan ringkasan dan lampiran.

Undangan rapat

9. Membuat draf email dengan Apps Script

Selanjutnya, Anda akan mengotomatiskan pembuatan draf email di Gmail. Berikut skenarionya: Misalkan Anda melakukan analisis data di Google Spreadsheet. Anda menempatkan semua angka dan membuat diagram. Anda ingin menggunakan Gemini Pro Vision API untuk membuat draf email berdasarkan diagram.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Buka spreadsheet ini, lalu klik File -> Buat salinan.
  2. Di kotak teks Nama pada dialog Salin dokumen, ganti nama default Copy of CollegeExpenses dengan CollegeExpenses.
  3. Di file main.gs, ganti kueri pengguna sebelumnya dengan kueri baru, lalu tambahkan kode berikut ke pernyataan 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. Di file utils.gs, tambahkan kode berikut:
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'
  });
}

Fungsi ini mengambil diagram biaya kuliah dari spreadsheet dan mengirimkannya ke Gemini Pro Vision untuk membuat draf email. Gemini Pro Vision mengekstrak informasi dari diagram dan membuat draf isi email atas nama Anda.

  1. Di file utils.gs, tambahkan kode berikut ke objek WORKSPACE_TOOLS setelah komentar You add tools here:
  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. Di editor, kembali ke file main.gs, lalu klik 5b9034ff679c8761.png.
  2. Setelah 10-20 detik, buka Gmail Anda. Anda akan melihat draf email seperti ini:

Anda dapat merevisi draf email sebelum mengirimkannya. Email ini sepenuhnya ditulis oleh Gemini Pro Vision setelah Anda memberinya perintah singkat dan diagram.

10. Membuat draf presentasi dengan Apps Script

Selanjutnya, Anda akan mengotomatiskan pembuatan draf presentasi di Google Slide dengan Apps Script.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Di file main.gs, ganti kueri pengguna sebelumnya dengan kueri baru dan tambahkan kode berikut ke pernyataan 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. Di file utils.gs, tambahkan kode berikut:
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();
}

Fungsi ini memanggil Gemini API untuk mendiskusikan topik tertentu, menampilkan poin-poin dalam format

JSON, lalu gunakan Apps Script untuk mengisi draf presentasi.

  1. Di file utils.gs, tambahkan kode berikut ke objek WORKSPACE_TOOLS setelah komentar You add tools here:
  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. Di bagian atas file utils.gs, tentukan konstanta berikut:
const NUM_SLIDES = 3;

Ini adalah jumlah slide yang dibuat model Gemini selain slide pembuka.

  1. Di editor, kembali ke file main.gs, lalu klik 5b9034ff679c8761.png. Dalam beberapa detik, Anda akan melihat URL presentasi di log eksekusi.
  2. Gunakan browser Anda untuk membuka URL. Anda akan melihat draf presentasi yang diisi dengan poin-poin.

Draf presentasi

11. Ide untuk dijelajahi

Selain ketiga integrasi ini, Anda dapat mempelajari ide berikut:

  • Membangun chatbot di Google Chat. Salah satu kasus penggunaan paling populer untuk Model Bahasa Besar (LLM) adalah membangun chatbot. Dengan Gemini API, Anda dapat dengan mudah membuat chatbot untuk Google Chat. Untuk mengetahui informasi selengkapnya, lihat Google Chat API dan codelab Membangun aplikasi untuk Google Chat dengan Gemini.
  • Retrieval-Augmented Generation (RAG) dengan data Anda sendiri di Google Drive atau Keep. Dalam codelab ini, Anda hanya menggunakan satu file teks untuk peringkasan. Namun, Anda juga dapat menggunakan konten dari Google Drive dan Keep pribadi Anda–seperti catatan, PDF, dan gambar–dengan Gemini API, database vektor, dan, secara opsional, alat orkestrasi–seperti LangChain–untuk melakukan RAG dan mempersonalisasi respons model berdasarkan data Anda.
  • Gunakan kemampuan panggilan fungsi multi-giliran Gemini API. Panggilan fungsi Gemini API tidak terbatas pada satu giliran dan Anda dapat menggunakan panggilan fungsi multi-giliran untuk tugas yang lebih kompleks.
  • Melampaui Google Workspace. Setelah memahami cara mengintegrasikan Gemini API dengan Google Workspace, Anda dapat melampaui Google Workspace dan memanfaatkan API lain di dunia.

12. Selamat

Anda telah mempelajari kemampuan multi-modal dan panggilan fungsi Gemini API. Anda menggunakannya untuk mengotomatiskan beberapa tugas Google Workspace dengan Apps Script.

Pelajari lebih lanjut