Mengotomatiskan tugas Google Workspace dengan Gemini API

1. Sebelum memulai

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

Prasyarat

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

Yang Anda pelajari

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

Yang Anda perlukan

  • {i>Browser<i} internet.
  • Akun Gmail. Atau, berupa 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 Buku Panduan Gemini API di GitHub. Periksalah jika Anda memerlukan kode yang sudah selesai.

2. Menyiapkan Gemini API

Tentang Gemini

Model Gemini adalah rangkaian 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, mengubah setelan model, dan menyesuaikan model kustom tanpa menulis kode apa pun.

Dapatkan kunci

Opsional: Menguji kunci Anda

Jika Anda memiliki akses ke command line dengan curl, tambahkan kunci ke baris pertama blok berikutnya, 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 artinya cara itu berhasil.

3. Opsional: Membuat permintaan ke Gemini API

Pada langkah opsional ini, Anda akan 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 berbeda. Setiap model tercantum beserta kemampuannya di halaman model Gemini.

Membuat permintaan pertama Anda

Agar Gemini API menyelesaikan perintah teks, buat permintaan JSON dan kirimkan ke endpoint REST API.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Di 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 tersebut akan menyelesaikan instruksi ini dan memberikan hasilnya secara langsung kepada Anda.

Permintaan JSON memiliki tiga kolom tingkat teratas untuk diisi: contents, generationConfig, dan safetySettings. Hanya contents yang diperlukan. Sementara yang lainnya menyediakan mekanisme untuk mengontrol {i>output<i}.

  1. Simpan JSON ini dalam file presentation.txt, lalu teruskan langsung ke curl seperti berikut:
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 menetapkan metode API yang Anda panggil.

Anda akan melihat hasil yang mirip dengan yang 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": [...]
  }
}

Demi keterbacaan, berikut output terminal yang diformat secara teratur:

  • Kredibilitas: Audiens harus yakin bahwa Anda adalah pakar dalam bidang tertentu dan Anda memiliki kepentingan terbaik 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 dari sisi logis audiens, Anda juga harus mencoba terhubung dengan mereka pada tingkat emosional. Gunakan penceritaan, humor, dan anekdot pribadi untuk membuat poin Anda lebih berkesan dan menarik.
  • Penutupan yang kuat: Mengakhiri presentasi Anda dengan pesan ajakan (CTA) yang kuat. Beri tahu audiens apa yang Anda ingin mereka lakukan dan mengapa penting bagi mereka untuk melakukannya.

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

4. Memanggil Gemini API dari Apps Script

  1. Kunjungi script.new dan file Apps Script code.gs akan dibuat secara otomatis untuk Anda.
  2. Tahan kursor ke file code.gs, lalu klik 8bfe57773be886ab.pngS > Ganti nama.
  3. Ubah nama file menjadi utils.gs.
  4. Dalam file, hapus fungsi myFunction agar file kosong.

Menambahkan kunci API Anda ke project

  1. Di menu navigasi, pilih Project settings.
  2. Di bagian Properti skrip, klik Tambahkan properti skrip.
  3. Di bagian Properti, masukkan GOOGLE_API_KEY.
  4. Di bagian Nilai, masukkan kunci API 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 daftar dropdown fungsi lalu klik 5b9034ff679c8761.pngS.
  3. Setujui izin yang diperlukan. Kode Anda akan berjalan dan Anda akan melihat beberapa output konsol dengan hasilnya 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 menyediakan 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 image pengujian dari internet dan meneruskannya ke fungsi yang Anda tentukan. Kemudian, Anda menghubungkannya untuk menggunakan diagram dari {i>spreadsheet<i}, jadi ini hanya pengujian.

Melakukan pengujian

  • Simpan dan jalankan fungsi testGeminiVision, lalu periksa outputnya.

849c6728bfb5ec52.pngS

6. Memanggil Gemini API dengan alat

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

Menambahkan 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 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 tidak benar-benar memanggil fungsi date-time. Anda hanya akan menerima indikasi bahwa model meminta panggilan fungsi. Anda akan menangani panggilan fungsi di langkah berikutnya.

  1. Simpan dan jalankan fungsi testGeminiTools untuk melihat outputnya.

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 mem-build integrasi terhadap produk Google Workspace, seperti Google Drive, Google Slide, dan Google Spreadsheet. Berikut adalah diagram sederhananya:

3 alat

Secara umum, saat kueri pengguna masuk, Anda menggunakan panggilan fungsi Gemini API untuk menentukan alat 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 sebuah blog di Google Drive dan menambahkan ringkasan tersebut ke rapat yang baru dibuat di Google Kalender.
  • Membuat 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 presentasi kerangka. Fungsi createDeck() dalam diagram memanggil Gemini 1.0 Pro guna mendiskusikan poin-poin untuk presentasi di Google Slide.

Untuk masing-masing alat, Anda perlu melakukan tiga hal berikut:

  1. Menentukan apakah respons panggilan fungsi Gemini API meminta untuk memanggil alat tertentu dalam blok if...else.
  2. Tambahkan fungsi sebenarnya untuk mengimplementasikan fungsi alat.
  3. Deklarasikan alat tersebut 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-tama, Anda akan 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 blog peluncuran Gemini 1.5 Pro.
  2. Upload file ke folder root 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 akan memanggil kemampuan panggilan fungsi Gemini API. Selanjutnya, Anda perlu menentukan fungsi alat.

  1. Di sebelah kiri editor, di samping Layanan, klik + Tambahkan layanan > API Google Kalender > Tambahkan. Tindakan ini akan mengaktifkan layanan Google Kalender lanjutan, yang nantinya perlu Anda gunakan untuk beberapa API lanjutan.

Tambahkan 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() menelusuri 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 Aplikasi Kalender 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.pngS.
  2. Jika Google Workspace meminta izin Anda untuk menjalankan skrip, klik Oke.

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

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

Undangan rapat

9. Membuat draf email dengan Apps Script

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

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Buka sheet ini dan klik File -> Buat salinan.
  2. Di kotak teks Nama dialog Salin dokumen, ganti nama default Copy of CollegeExpenses dengan CollegeExpenses.
  3. Di file main.gs, ganti kueri pengguna sebelumnya dengan yang 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 pengeluaran kuliah dari sheet dan mengirimkannya ke Gemini Pro Vision untuk membuat draf email. Gemini Pro Vision mengekstrak informasi dari diagram dan membuat draf isi email untuk 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.pngS.
  2. Setelah 10 hingga 20 detik, buka Gmail Anda. Anda akan melihat draf email seperti ini:

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

10. Membuat presentasi kerangka dengan Apps Script

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

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Di file main.gs, ganti kueri pengguna sebelumnya dengan yang 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 bertukar pikiran terkait topik tertentu, menampilkan poin-poin dalam format

JSON, lalu gunakan Apps Script untuk mengisi dek kerangka.

  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.pngS. Dalam beberapa detik, Anda akan melihat URL presentasi di log eksekusi.
  2. Gunakan browser Anda untuk membuka URL. Anda akan melihat dek kerangka yang berisi poin-poin.

Presentasi draf

11. Ide untuk dijelajahi

Selain ketiga integrasi ini, Anda dapat mengeksplorasi ide-ide berikut:

  • Membuat chatbot di Google Chat. Salah satu kasus penggunaan paling populer untuk Model Bahasa Besar (LLM) adalah membangun chatbot. Dengan Gemini API, mudah sekali membangun chatbot untuk Google Chat. Untuk mengetahui informasi selengkapnya, lihat Google Chat API dan codelab Membuat 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 fitur ringkasan. 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.
  • Menggunakan kemampuan panggilan fungsi multi-giliran Gemini API. Panggilan fungsi Gemini API tidak terbatas pada satu putaran dan Anda dapat memanggil fungsi multi-giliran untuk tugas yang lebih kompleks.
  • Jangan hanya terpaku pada Google Workspace. Setelah memahami cara mengintegrasikan Gemini API dengan Google Workspace, Anda dapat melakukan lebih dari sekadar Google Workspace dan memanfaatkan API lainnya di dunia.

12. Selamat

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

Pelajari lebih lanjut