Automatyzowanie zadań w Google Workspace przy użyciu interfejsu Gemini API

1. Zanim zaczniesz

W tym module dowiesz się, jak zautomatyzować zadania w Google Workspace za pomocą funkcji wywoływania funkcji i wielomodowości interfejsu Gemini API.

Wymagania wstępne

  • Podstawowa znajomość Apps Script, JavaScriptu lub podobnego języka programowania

Czego się dowiesz

  • Jak korzystać z funkcji wywoływania funkcji i wielomodowości interfejsu Gemini API.
  • Jak łączyć ze sobą kilka wywołań Gemini API.
  • Jak zautomatyzować zadania w Google Workspace za pomocą interfejsu Gemini API.

Wymagania

  • przeglądarki internetowej,
  • konto Gmail, Możesz też użyć konta Google Workspace, na którym wdrożono określoną konfigurację interfejsu Gemini API.
  • Połączenie z obsługiwanego regionu w przypadku interfejsu Gemini API.
  • Opcjonalnie: interfejs wiersza poleceń z programem curl do testowania bezpośrednich żądań interfejsu API.

Pełny kod tego ćwiczenia jest dostępny w książce kucharskiej Gemini API na GitHubie. Jeśli potrzebujesz gotowego kodu, sprawdź go.

2. Konfigurowanie interfejsu Gemini API

Informacje o Gemini

Modele Gemini to największa i najbardziej zaawansowana rodzina modeli AI od Google. Aby korzystać z tych modeli w aplikacjach, możesz użyć Gemini API. Możesz też wypróbować interfejs Gemini API w Google AI Studio, czyli w interfejsie internetowym, w którym możesz testować prompty, dostosowywać ustawienia modelu i optymalizować modele niestandardowe bez pisania kodu.

Zamów klucz

Opcjonalnie: testowanie klucza

Jeśli masz dostęp do wiersza poleceń z curl, dodaj klucz do pierwszego wiersza poniższego bloku, a potem uruchom go w terminalu, aby przetestować klucz interfejsu API.

export GOOGLE_API_KEY=Paste_your_API_key_here

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

Powinna się wyświetlić lista modeli w formacie JSON, np. models/gemini-1.0-pro. Oznacza to, że się udało.

3. Opcjonalnie: wysyłanie żądań do interfejsu Gemini API

W tym opcjonalnym kroku możesz wysłać żądanie do interfejsu Gemini API, aby lepiej zrozumieć, jak działa generowanie treści, zanim dodasz je do aplikacji Apps Script.

Informacje o modelach

Interfejs Gemini API udostępnia kilka modeli o różnych możliwościach i ograniczeniach. Każdy model jest wymieniony wraz z jego możliwościami na stronie modeli Gemini.

Tworzenie pierwszej prośby

Aby interfejs Gemini API dokończył prompt tekstowy, utwórz żądanie JSON i wyślij je do punktu końcowego interfejsu REST API.

W tym celu wykonaj następujące czynności:

  1. W nowym pliku wpisz to żądanie w formacie JSON:
{
  contents: [
   {
     parts: [
       { text: 'The most important aspects of a persuasive presentation are:' }
     ]
   }
 ]
}

Żądanie JSON zawiera ten prompt: The most important aspects of a persuasive presentation are:. Model wykona tę instrukcję i bezpośrednio poda Ci wynik.

Żądanie JSON ma 3 pola najwyższego poziomu, które należy wypełnić: contents, generationConfigsafetySettings. Wymagany jest tylko parametr contents. Pozostałe zapewniają mechanizmy sterowania wyjściem.

  1. Zapisz ten kod JSON w pliku presentation.txt, a następnie przekaż go bezpośrednio do curl w ten sposób:
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}

W tym przykładzie w adresie URL ustawiasz te wartości:

  • v1beta określa wersję interfejsu API.
  • gemini-1.0-pro-latest określa Gemini 1.0 Pro jako model i używa najnowszej migawki.
  • generateContent określa wywoływaną metodę interfejsu API.

Powinny pojawić się wyniki podobne do tych:

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

Dla większej czytelności poniżej znajdziesz dane wyjściowe z terminala w standardowym formacie:

  • Wiarygodność: odbiorcy muszą wierzyć, że jesteś ekspertem w danej dziedzinie i że leży Ci na sercu ich dobro.
  • Jasność: wiadomość musi być łatwa do zrozumienia i wykonania. Unikaj żargonu i terminów technicznych, które mogą być nieznane Twoim odbiorcom.
  • Konkretność: używaj konkretnych przykładów i danych, aby poprzeć swoje argumenty. Unikaj niejasnych lub ogólnych stwierdzeń.
  • Apelowanie do emocji: oprócz odwoływania się do logiki odbiorców warto też nawiązać z nimi kontakt na poziomie emocjonalnym. Wykorzystuj opowiadanie historii, humor i osobiste anegdoty, aby Twoje argumenty były bardziej zapadające w pamięć i angażujące.
  • Mocne zakończenie: zakończ prezentację mocnym wezwaniem do działania. Powiedz odbiorcom, co mają zrobić i dlaczego jest to dla nich ważne.

Więcej informacji o pozostałych ustawieniach, w tym generationConfigsafetySettings, znajdziesz w przewodnikach dotyczących promptówbezpieczeństwa.

4. Wywoływanie interfejsu Gemini API z Apps Script

  1. Otwórz stronę script.new, a plik Apps Script code.gs zostanie utworzony automatycznie.
  2. Najedź kursorem na plik code.gs, a następnie kliknij 8bfe57773be886ab.png > Zmień nazwę.
  3. Zmień nazwę pliku na utils.gs.
  4. Usuń z pliku funkcję myFunction, aby był pusty.

Dodawanie klucza interfejsu API do projektu

  1. W menu nawigacyjnym wybierz Ustawienia projektu.
  2. W sekcji Właściwości skryptu kliknij Dodaj właściwość skryptu.
  3. W polu Usługa wpisz GOOGLE_API_KEY.
  4. W sekcji Wartość wpisz klucz interfejsu API z Google AI Studio.

fcfe205a93879c49.png

  1. Kliknij Zapisz właściwości skryptu.
  2. Wróć do edytora.

Dodawanie kodu interfejsu Gemini API

W pliku utils.gs wykonaj te czynności:

Skonfiguruj klucz interfejsu API i punkt końcowy:

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. Dodaj tę funkcję, która wywołuje interfejs Gemini API z określonym promptem:
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. Dodaj tę funkcję, która ustawia prompt:
function testGemini() {
  const prompt = "The best thing since sliced bread is";
  const output = callGemini(prompt);
  console.log(prompt, output);
}

Przetestuj

  1. Kliknij 76113423d1f91775.png Zapisz.
  2. Wybierz testGemini z listy funkcji i kliknij 5b9034ff679c8761.png.
  3. Zaakceptuj wymagane uprawnienia. Kod powinien się uruchomić, a w logu wykonania powinny się pojawić wyniki.

Dziennik wykonania

Udało się!

5. Wywoływanie interfejsu Gemini API za pomocą obrazów

Jedną z najważniejszych funkcji modeli z rodziny Gemini jest obsługa danych multimodalnych, co oznacza, że możesz podać nie tylko tekst. W tej sekcji dodasz funkcję, która wywołuje interfejs Gemini API z obrazem.

  • U góry pliku utils.gs, po istniejącej deklaracji const geminiEndpoint, dodaj ten wiersz:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

Dodawanie kodu Gemini Vision

  1. Dodaj do pliku utils.gs funkcję, która wywołuje ten nowo dodany punkt końcowy:
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. Dodaj tę funkcję testową:
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);
}

Ta funkcja wczytuje obraz testowy z internetu i przekazuje go do zdefiniowanej przez Ciebie funkcji. Później połączysz go z wykresem z arkusza kalkulacyjnego, więc to tylko test.

Przetestuj

  • Zapisz i uruchom funkcję testGeminiVision, a potem sprawdź dane wyjściowe.

849c6728bfb5ec52.png

6. Wywoływanie interfejsu Gemini API za pomocą narzędzi

Oprócz tekstu i obrazów możesz też udostępniać narzędzia w promptach.

Dodawanie kodu obsługi narzędzia

  • Dodaj do pliku utils.gs funkcję, która akceptuje specyfikację narzędzia:
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;
}

Więcej informacji o tym schemacie i dostępnych polach znajdziesz w FunctionDeclaration dokumentacji API.

Przetestuj

  1. Zdefiniuj narzędzie, którego model może używać do znajdowania bieżącej daty i godziny:
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);
}

Użyty tutaj format to schemat FunctionDeclaration. Nie wywołujesz funkcji daty i godziny. Otrzymasz tylko informację, że model poprosił o wywołanie funkcji. Wywołania funkcji obsłużysz w późniejszym kroku.

  1. Zapisz i uruchom funkcję testGeminiTools, aby zobaczyć dane wyjściowe.

Dziennik wykonania

7. Omówienie integracji demonstracyjnych z Google Workspace

Teraz, gdy wiesz już, jak działa wywoływanie funkcji, możesz łatwo rozszerzyć możliwości modelu Gemini na inne usługi. W kolejnych sekcjach utworzysz integracje z usługami Google Workspace, takimi jak Dysk Google, Prezentacje Google i Arkusze Google. Oto uproszczony diagram:

3 narzędzia

Gdy użytkownik wyśle zapytanie, używasz wywoływania funkcji interfejsu Gemini API, aby określić, którego narzędzia użyć. Tworzysz 3 narzędzia, które mogą:

  • Konfigurowanie spotkania Funkcja setupMeeting() na diagramie wywołuje interfejs Gemini 1.0 Pro API, aby podsumować bloga na Dysku Google i dodać podsumowanie do nowo utworzonego spotkania w Kalendarzu Google.
  • Tworzenie wersji roboczej e-maila na podstawie statystyk z wykresu Funkcja draftEmail() na diagramie wywołuje Gemini 1.0 Pro Vision, aby przeanalizować wykres w Arkuszach Google i na podstawie tej analizy utworzyć e-maila w Gmailu.
  • Utwórz szkielet prezentacji. Funkcja createDeck() na diagramie wywołuje Gemini 1.0 Pro, aby wygenerować punkty do prezentacji w Prezentacjach Google.

W przypadku każdego narzędzia musisz wykonać te 3 czynności:

  1. Sprawdź, czy odpowiedź wywołania funkcji interfejsu Gemini API zawiera prośbę o wywołanie tego narzędzia w bloku if...else.
  2. Dodaj rzeczywistą funkcję, aby zaimplementować funkcjonalność narzędzia.
  3. Zadeklaruj narzędzie w interfejsie Gemini API, aby model Gemini wiedział o jego istnieniu i mógł zwracać prawidłową odpowiedź wywołania funkcji.

8. Konfigurowanie spotkania za pomocą Apps Script

Najpierw zautomatyzujesz konfigurację spotkania w Kalendarzu Google, ale dodasz też opis, który jest podsumowaniem pliku na Dysku Google.

W tym celu wykonaj następujące czynności:

  1. Pobierz ten plik tekstowy, który jest kopią tekstu posta na blogu o wprowadzeniu Gemini 1.5 Pro.
  2. Prześlij plik do folderu głównego na Dysku Google.
  3. W edytorze utwórz plik main.gs, a następnie dodaj ten kod:
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");
}

W tym miejscu wywołujesz funkcję wywoływania funkcji interfejsu Gemini API. Następnie musisz zdefiniować funkcję narzędzia.

  1. Po lewej stronie edytora obok opcji Usługi kliknij + Dodaj usługę > Interfejs Google Calendar API > Dodaj. Włącza to zaawansowaną usługę Kalendarza Google, która jest potrzebna do korzystania z niektórych zaawansowanych interfejsów API.

Dodawanie usługi

  1. W pliku utils.gs dodaj ten kod:
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);
}

Ten kod wykonuje te czynności:

  • Funkcja setupMeeting() przeszukuje Dysk Google i znajduje plik Gemini-blog.txt. Ta nazwa pliku jest automatycznie zwracana przez wywołanie funkcji interfejsu Gemini API w kroku 3.
  • Funkcja setupMeeting() wywołuje interfejs Gemini API, aby podsumować zawartość pliku, tworzy spotkanie za pomocą CalendarApp na podstawie opisu w dowolnym formacie i dodaje podsumowanie do spotkania.
  • Funkcja setupMeeting() wywołuje funkcję attachFileToMeeting(), aby użyć zaawansowanej usługi Kalendarza Google do dołączenia pliku bloga do spotkania.
  1. U góry pliku utils.gs dodaj ten kod:
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. W edytorze wróć do pliku main.gs i kliknij 5b9034ff679c8761.png.
  2. Jeśli Google Workspace poprosi Cię o pozwolenie na uruchomienie skryptu, kliknij OK.

Po kilku sekundach w dzienniku wykonania pojawi się komunikat z informacją, że spotkanie zostało skonfigurowane.

  1. W Kalendarzu Google znajdź spotkanie z podsumowaniem i załącznikiem.

Zaproszenie na spotkanie

9. Tworzenie wersji roboczej e-maila za pomocą Apps Script

Następnie zautomatyzuj tworzenie wersji roboczej e-maila w Gmailu. Załóżmy, że przeprowadzasz analizę danych w Arkuszach Google. Wstawiasz wszystkie liczby i tworzysz wykres. Chcesz użyć interfejsu Gemini Pro Vision API, aby przygotować e-maila na podstawie wykresu.

W tym celu wykonaj następujące czynności:

  1. Otwórz ten arkusz i kliknij Plik -> Utwórz kopię.
  2. W polu tekstowym Nazwa w oknie Kopiuj dokument zastąp domyślną nazwę Copy of CollegeExpenses nazwą CollegeExpenses.
  3. W pliku main.gs zastąp poprzednie zapytanie użytkownika nowym, a następnie dodaj ten kod do instrukcji 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. W pliku utils.gs dodaj ten kod:
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'
  });
}

Ta funkcja pobiera z arkusza wykres wydatków na studia i wysyła go do Gemini Pro Vision, aby utworzyć wersję roboczą e-maila. Gemini Pro Vision wyodrębnia informacje z wykresu i tworzy treść e-maila w Twoim imieniu.

  1. W pliku utils.gs dodaj ten kod do obiektu WORKSPACE_TOOLS po komentarzu 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. W edytorze wróć do pliku main.gs, a następnie kliknij 5b9034ff679c8761.png.
  2. Po 10–20 sekundach otwórz Gmaila. Powinien pojawić się szkic e-maila podobny do tego:

Przed wysłaniem możesz poprawić wersję roboczą e-maila. E-mail jest w całości napisany przez Gemini Pro Vision po tym, jak podasz krótki prompt i wykres.

10. Tworzenie szkieletu prezentacji za pomocą Apps Script

Następnie zautomatyzuj tworzenie szkieletu prezentacji w Prezentacjach Google za pomocą Apps Script.

W tym celu wykonaj następujące czynności:

  1. W pliku main.gs zastąp poprzednie zapytanie użytkownika nowym i dodaj ten kod do instrukcji 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. W pliku utils.gs dodaj ten kod:
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();
}

Ta funkcja wywołuje interfejs Gemini API, aby przeprowadzić burzę mózgów na określony temat i zwrócić listę punktowaną w formacie

JSON, a następnie użyć Apps Script do wypełnienia szkieletu prezentacji.

  1. W pliku utils.gs dodaj ten kod do obiektu WORKSPACE_TOOLS po komentarzu 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. U góry pliku utils.gs zdefiniuj tę stałą:
const NUM_SLIDES = 3;

Jest to liczba slajdów, które model Gemini tworzy oprócz slajdu otwierającego.

  1. W edytorze wróć do pliku main.gs, a następnie kliknij 5b9034ff679c8761.png. Po kilku sekundach w dzienniku wykonywania pojawi się adres URL prezentacji.
  2. Otwórz adres URL w przeglądarce. Powinien pojawić się szkielet prezentacji wypełniony punktami.

Prezentacja w wersji roboczej

11. Pomysły do sprawdzenia

Oprócz tych 3 integracji możesz wypróbować te pomysły:

  • Tworzenie czatbota w Google Chat Jednym z najpopularniejszych zastosowań dużych modeli językowych (LLM) jest tworzenie czatbotów. Interfejs Gemini API ułatwia tworzenie czatbota do Google Chat. Więcej informacji znajdziesz w dokumentacji interfejsu Google Chat API oraz w samouczku Tworzenie aplikacji do Google Chat z Gemini.
  • Generowanie wspomagane wyszukiwaniem (RAG) z użyciem własnych danych na Dysku Google lub w Keep. W tym laboratorium użyjesz tylko jednego pliku tekstowego do podsumowania. Możesz jednak używać treści z osobistego Dysku Google i Keep – takich jak notatki, pliki PDF i obrazy – z interfejsem Gemini API, bazą danych wektorowych i opcjonalnie narzędziem do orkiestracji, takim jak LangChain, aby wykonywać RAG i personalizować odpowiedzi modelu na podstawie swoich danych.
  • Korzystanie z funkcji wywoływania funkcji w wielu turach interfejsu Gemini API. Wywoływanie funkcji w Gemini API nie jest ograniczone do jednej tury. Możesz używać wywoływania funkcji w wielu turach, aby wykonywać jeszcze bardziej złożone zadania.
  • Wykorzystaj pełnię możliwości Google Workspace Teraz, gdy wiesz już, jak zintegrować interfejs Gemini API z Google Workspace, możesz wyjść poza Google Workspace i korzystać z innych interfejsów API.

12. Gratulacje

Poznaliśmy wielomodowe możliwości interfejsu Gemini API i wywoływanie funkcji. Używasz ich do automatyzacji niektórych zadań w Google Workspace za pomocą Apps Script.

Więcej informacji