Google Workspace-Aufgaben mit der Gemini API automatisieren

1. Hinweis

In diesem Codelab erfahren Sie, wie Sie Google Workspace-Aufgaben mit den Funktionen für Funktionsaufrufe und Multimodalität der Gemini API automatisieren.

Vorbereitung

  • Grundkenntnisse in Apps Script, JavaScript oder einer ähnlichen Programmiersprache

Lerninhalte

  • Wie Sie die Funktionen für Funktionsaufrufe und Multimodalität der Gemini API nutzen können.
  • So verketten Sie mehrere Gemini API-Aufrufe.
  • Google Workspace-Aufgaben mit der Gemini API automatisieren

Voraussetzungen

  • Einen Webbrowser.
  • Ein Gmail-Konto. Alternativ können Sie ein Google Workspace-Konto verwenden, für das die spezifische Einrichtung der Gemini API implementiert wurde.
  • Eine Verbindung aus einer unterstützten Region für die Gemini API.
  • Optional: Eine Befehlszeilenschnittstelle mit dem Programm curl zum Testen direkter API-Anfragen.

Der vollständige Code für dieses Codelab ist im Gemini API Cookbook auf GitHub verfügbar. Dort finden Sie den vollständigen Code.

2. Gemini API einrichten

Über Gemini

Die Gemini-Modelle sind die größten und leistungsstärksten KI-Modelle von Google. Wenn Sie diese Modelle in Ihren Apps nutzen möchten, können Sie die Gemini API verwenden. Sie können die Gemini API auch in Google AI Studio ausprobieren. Das ist eine Weboberfläche für die API, in der Sie Prompts testen, Modelleinstellungen anpassen und benutzerdefinierte Modelle optimieren können, ohne Code zu schreiben.

Schlüssel abrufen

Optional: Schlüssel testen

Wenn Sie über die Befehlszeile mit curl verfügen, fügen Sie Ihren Schlüssel in die erste Zeile des folgenden Blocks ein und führen Sie ihn dann in Ihrem Terminal aus, um den API-Schlüssel zu testen.

export GOOGLE_API_KEY=Paste_your_API_key_here

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

Sie sollten eine Liste von Modellen im JSON-Format sehen, z. B. „models/gemini-1.0-pro“. Das bedeutet, dass es funktioniert hat.

3. Optional: Anfrage an die Gemini API senden

In diesem optionalen Schritt senden Sie eine Anfrage an die Gemini API, um besser zu verstehen, wie die Inhaltserstellung funktioniert, bevor Sie sie einer Apps Script-App hinzufügen.

Modelle

Die Gemini API bietet eine Reihe von Modellen mit unterschiedlichen Funktionen und Einschränkungen. Jedes Modell wird zusammen mit seinen Funktionen auf der Seite „Gemini-Modelle“ aufgeführt.

Erste Anfrage senden

Wenn die Gemini API einen Text-Prompt vervollständigen soll, erstellen Sie eine JSON-Anfrage und senden sie an den REST API-Endpunkt.

Führen Sie dazu die folgenden Schritte aus:

  1. Geben Sie in einer neuen Datei die folgende JSON-Anfrage ein:
{
  contents: [
   {
     parts: [
       { text: 'The most important aspects of a persuasive presentation are:' }
     ]
   }
 ]
}

Die JSON-Anfrage enthält den folgenden Prompt: The most important aspects of a persuasive presentation are:. Das Modell führt diese Anweisung aus und liefert Ihnen das Ergebnis direkt.

Die JSON-Anfrage hat drei Felder der obersten Ebene, die ausgefüllt werden müssen: contents, generationConfig und safetySettings. Nur contents ist erforderlich. Die anderen bieten Mechanismen zur Steuerung der Ausgabe.

  1. Speichern Sie diese JSON-Datei in einer presentation.txt-Datei und übergeben Sie sie dann so direkt an 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}

In diesem Beispiel legen Sie die folgenden Werte in der URL fest:

  • v1beta gibt die API-Version an.
  • gemini-1.0-pro-latest gibt Gemini 1.0 Pro als Modell an und verwendet den neuesten Snapshot.
  • generateContent gibt die API-Methode an, die Sie aufrufen.

Die Ergebnisse sollten in etwa so aussehen:

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

Aus Gründen der Lesbarkeit ist hier die Terminalausgabe regulär formatiert:

  • Glaubwürdigkeit:Das Publikum muss darauf vertrauen, dass Sie ein Experte auf dem Gebiet sind und dass Sie das Beste für sie im Sinn haben.
  • Klarheit:Ihre Nachricht muss leicht verständlich und nachvollziehbar sein. Vermeiden Sie Jargon oder Fachbegriffe, die Ihre Zielgruppe möglicherweise nicht kennt.
  • Konkretheit:Verwenden Sie konkrete Beispiele und Daten, um Ihre Argumente zu untermauern. Vermeiden Sie vage oder allgemeine Behauptungen.
  • Emotionale Ansprache:Sie sollten die Zielgruppe nicht nur auf der logischen Ebene ansprechen, sondern auch versuchen, eine emotionale Verbindung zu ihr herzustellen. Verwenden Sie Storytelling, Humor und persönliche Anekdoten, um Ihre Aussagen einprägsamer und ansprechender zu gestalten.
  • Überzeugender Abschluss:Beenden Sie Ihre Präsentation mit einem überzeugenden Call-to-Action. Sagen Sie den Zuhörern, was Sie von ihnen erwarten und warum es wichtig ist, dass sie es tun.

Weitere Informationen zu den anderen Einstellungen, einschließlich generationConfig und safetySettings, finden Sie in den Anleitungen zu Prompts und Sicherheit.

4. Gemini API über Apps Script aufrufen

  1. Rufen Sie script.new auf. Daraufhin wird automatisch eine code.gs Apps Script-Datei für Sie erstellt.
  2. Bewegen Sie den Mauszeiger auf die Datei code.gs und klicken Sie dann auf 8bfe57773be886ab.png > Umbenennen.
  3. Ändern Sie den Dateinamen in utils.gs.
  4. Entfernen Sie die Funktion myFunction aus der Datei, sodass die Datei leer ist.

API-Schlüssel zum Projekt hinzufügen

  1. Wählen Sie im Navigationsmenü Projekteinstellungen aus.
  2. Klicken Sie unter Skripteigenschaften auf Skripteigenschaft hinzufügen.
  3. Geben Sie unter Property GOOGLE_API_KEY ein.
  4. Geben Sie unter Wert Ihren API-Schlüssel aus Google AI Studio ein.

fcfe205a93879c49.png

  1. Klicken Sie auf Skripteigenschaften speichern.
  2. Kehren Sie zum Editor zurück.

Gemini API-Code hinzufügen

Führen Sie in der Datei utils.gs die folgenden Schritte aus:

API-Schlüssel und ‑Endpunkt einrichten:

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. Fügen Sie die folgende Funktion hinzu, die die Gemini API mit einem bestimmten Prompt aufruft:
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. Fügen Sie die folgende Funktion hinzu, mit der der Prompt festgelegt wird:
function testGemini() {
  const prompt = "The best thing since sliced bread is";
  const output = callGemini(prompt);
  console.log(prompt, output);
}

Testen

  1. Klicken Sie auf 76113423d1f91775.png Speichern.
  2. Wählen Sie in der Drop-down-Liste für Funktionen testGemini aus und klicken Sie auf 5b9034ff679c8761.png.
  3. Akzeptieren Sie die erforderlichen Berechtigungen. Der Code sollte ausgeführt werden und Sie sollten eine Konsolenausgabe mit den Ergebnissen im Ausführungsprotokoll sehen.

Ausführungsprotokoll

Es hat funktioniert.

5. Gemini API mit Bildern aufrufen

Eine der leistungsstärksten Funktionen der Gemini-Modellfamilie ist die Unterstützung multimodaler Eingaben. Das bedeutet, dass Sie mehr als nur Text eingeben können. In diesem Abschnitt fügen Sie eine Funktion hinzu, die die Gemini API mit einem Bild aufruft.

  • Fügen Sie oben in der Datei utils.gs nach der vorhandenen const geminiEndpoint-Deklaration die folgende Zeile hinzu:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

Gemini Vision-Code hinzufügen

  1. Fügen Sie der Datei utils.gs eine Funktion hinzu, um diesen neu hinzugefügten Endpunkt aufzurufen:
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. Fügen Sie die folgende Testfunktion hinzu:
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);
}

Diese Funktion lädt ein Testbild aus dem Internet und übergibt es an die von Ihnen definierte Funktion. Später verbinden Sie sie mit einem Diagramm aus einer Tabelle. Dies ist also nur ein Test.

Testen

  • Speichern Sie die Funktion testGeminiVision und führen Sie sie aus. Sehen Sie sich dann die Ausgabe an.

849c6728bfb5ec52.png

6. Gemini API mit Tools aufrufen

Zusätzlich zu Text und Bildern können Sie in Ihren Prompts auch Zugriff auf Tools gewähren.

Code für die Verarbeitung von Tools hinzufügen

  • Fügen Sie der Datei utils.gs eine Funktion hinzu, die eine Tool-Spezifikation akzeptiert:
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;
}

Weitere Informationen zu diesem Schema und den verfügbaren Feldern finden Sie in der FunctionDeclaration API-Referenz.

Testen

  1. Definieren Sie ein Tool, mit dem das Modell das aktuelle Datum und die aktuelle Uhrzeit ermitteln kann:
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);
}

Das hier verwendete Format ist das FunctionDeclaration-Schema. Sie rufen die Funktion für Datum und Uhrzeit nicht auf. Sie erhalten nur einen Hinweis darauf, dass das Modell einen Funktionsaufruf angefordert hat. Die Funktionsaufrufe werden in einem späteren Schritt verarbeitet.

  1. Speichern Sie die testGeminiTools-Funktion und führen Sie sie aus, um die Ausgabe zu sehen.

Ausführungsprotokoll

7. Übersicht über Demo-Integrationen mit Google Workspace

Nachdem Sie nun wissen, wie Funktionsaufrufe funktionieren, können Sie die Funktionen des Gemini-Modells ganz einfach auf andere Dienste ausweiten. In den nächsten Abschnitten erstellen Sie Integrationen für Google Workspace-Produkte wie Google Drive, Google Präsentationen und Google Tabellen. Hier ein vereinfachtes Diagramm:

3 Tools

Wenn eine Nutzeranfrage eingeht, verwenden Sie die Funktion „Funktionsaufruf“ der Gemini API, um zu ermitteln, welches Tool verwendet werden soll. Sie erstellen drei Tools, die Folgendes können:

  • Besprechung einrichten Die Funktion setupMeeting() im Diagramm ruft die Gemini 1.0 Pro API auf, um einen Blog in Google Drive zusammenzufassen und die Zusammenfassung einem neu erstellten Termin in Google Kalender hinzuzufügen.
  • E‑Mail basierend auf Erkenntnissen aus einem Diagramm entwerfen: Die Funktion draftEmail() im Diagramm ruft Gemini 1.0 Pro Vision auf, um ein Diagramm in Google Tabellen zu analysieren und basierend auf der Analyse eine E‑Mail in Gmail zu verfassen.
  • Skelettpräsentation erstellen Die Funktion createDeck() im Diagramm ruft Gemini 1.0 Pro auf, um Stichpunkte für eine Präsentation in Google-Präsentationen zu erstellen.

Für jedes Tool müssen Sie die folgenden drei Schritte ausführen:

  1. Ermitteln Sie, ob in der Antwort des Funktionsaufrufs der Gemini API darum gebeten wird, das jeweilige Tool in einem if...else-Block aufzurufen.
  2. Fügen Sie die eigentliche Funktion hinzu, um die Tool-Funktionalität zu implementieren.
  3. Deklarieren Sie das Tool mit der Gemini API, damit das Gemini-Modell über das Tool informiert ist und die richtige Antwort für den Funktionsaufruf zurückgeben kann.

8. Termin mit Apps Script einrichten

Zuerst automatisieren Sie die Einrichtung einer Besprechung in Google Kalender. Außerdem fügen Sie eine Beschreibung hinzu, die eine Zusammenfassung einer Datei in Google Drive ist.

Führen Sie dazu die folgenden Schritte aus:

  1. Laden Sie diese Textdatei herunter, die den Text des Gemini 1.5 Pro-Blogs zum Start enthält.
  2. Laden Sie die Datei in Ihren Stammordner in Google Drive hoch.
  3. Erstellen Sie im Editor eine main.gs-Datei und fügen Sie den folgenden Code hinzu:
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");
}

Hier rufen Sie die Funktion „Funktionsaufruf“ der Gemini API auf. Als Nächstes müssen Sie die Tool-Funktion definieren.

  1. Klicken Sie links im Editor neben Dienste auf + Dienst hinzufügen > Google Calendar API > Hinzufügen. Dadurch wird der erweiterte Google Kalender-Dienst aktiviert, den Sie später für einige erweiterte APIs benötigen.

Dienst hinzufügen

  1. Fügen Sie in der Datei utils.gs den folgenden Code hinzu:
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);
}

Dieser Code tut Folgendes:

  • Die Funktion setupMeeting() durchsucht Google Drive nach der Datei Gemini-blog.txt. Dieser Dateiname wird im dritten Schritt automatisch von der Funktion „Funktionsaufruf“ der Gemini API zurückgegeben.
  • Die Funktion setupMeeting() ruft die Gemini API auf, um den Inhalt der Datei zusammenzufassen, richtet mit der CalendarApp ein Meeting mit einer Freiformbeschreibung ein und fügt dem Meeting die Zusammenfassung hinzu.
  • Die Funktion setupMeeting() ruft die Funktion attachFileToMeeting() auf, um den erweiterten Google Kalender-Dienst zu verwenden und die Blogdatei an die Besprechung anzuhängen.
  1. Fügen Sie am Anfang der Datei utils.gs den folgenden Code hinzu:
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. Kehren Sie im Editor zur Datei main.gs zurück und klicken Sie auf 5b9034ff679c8761.png.
  2. Wenn Sie in Google Workspace um die Berechtigung zum Ausführen des Skripts gebeten werden, klicken Sie auf OK.

Nach einigen Sekunden wird im Ausführungsprotokoll eine Meldung angezeigt, dass die Besprechung eingerichtet wurde.

  1. Suchen Sie in Google Kalender nach der Besprechung mit der Zusammenfassung und dem Anhang.

Einladung zur Besprechung

9. E‑Mail-Entwürfe mit Apps Script erstellen

Als Nächstes automatisieren Sie das Verfassen einer E‑Mail in Gmail. Angenommen, Sie führen eine Datenanalyse in Google Sheets durch. Sie haben alle Zahlen eingegeben und ein Diagramm erstellt. Sie möchten die Gemini Pro Vision API verwenden, um auf Grundlage des Diagramms eine E‑Mail zu entwerfen.

Führen Sie dazu die folgenden Schritte aus:

  1. Öffnen Sie diese Tabelle und klicken Sie auf Datei -> Kopie erstellen.
  2. Ersetzen Sie im Dialogfeld Dokument kopieren im Textfeld Name den Standardnamen Copy of CollegeExpenses durch CollegeExpenses.
  3. Ersetzen Sie in der Datei main.gs die vorherige Nutzeranfrage durch eine neue und fügen Sie dann der if...else-Anweisung den folgenden Code hinzu:
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. Fügen Sie in der Datei utils.gs den folgenden Code hinzu:
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'
  });
}

Diese Funktion ruft das Diagramm mit den College-Ausgaben aus dem Tabellenblatt ab und sendet es an Gemini Pro Vision, um die E‑Mail zu erstellen. Gemini Pro Vision extrahiert Informationen aus dem Diagramm und entwirft den E‑Mail-Text in Ihrem Namen.

  1. Fügen Sie in der Datei utils.gs dem WORKSPACE_TOOLS-Objekt nach dem Kommentar You add tools here den folgenden Code hinzu:
  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. Kehren Sie im Editor zur Datei main.gs zurück und klicken Sie dann auf 5b9034ff679c8761.png.
  2. Öffnen Sie nach 10 bis 20 Sekunden Gmail. Sie sollten einen E‑Mail-Entwurf wie diesen sehen:

Sie können den E‑Mail-Entwurf vor dem Senden noch einmal überarbeiten. Die E‑Mail wird vollständig von Gemini Pro Vision verfasst, nachdem Sie einen kurzen Prompt und das Diagramm angegeben haben.

10. Mit Apps Script eine Skelettpräsentation erstellen

Als Nächstes automatisieren Sie die Erstellung einer Präsentationsvorlage in Google Präsentationen mit Apps Script.

Führen Sie dazu die folgenden Schritte aus:

  1. Ersetzen Sie in der Datei main.gs die vorherige Nutzeranfrage durch eine neue und fügen Sie der if...else-Anweisung den folgenden Code hinzu:
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. Fügen Sie in der Datei utils.gs den folgenden Code hinzu:
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();
}

Diese Funktion ruft die Gemini API auf, um Ideen zu einem bestimmten Thema zu sammeln und die Stichpunkte im Format

von JSON und verwenden Sie dann Apps Script, um ein Skelettdeck zu füllen.

  1. Fügen Sie in der Datei utils.gs dem WORKSPACE_TOOLS-Objekt nach dem Kommentar You add tools here den folgenden Code hinzu:
  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. Definieren Sie oben in der Datei utils.gs die folgende Konstante:
const NUM_SLIDES = 3;

Dies ist die Anzahl der Folien, die das Gemini-Modell zusätzlich zur Eröffnungsfolie erstellt.

  1. Kehren Sie im Editor zur Datei main.gs zurück und klicken Sie dann auf 5b9034ff679c8761.png. Nach einigen Sekunden wird im Ausführungsprotokoll eine Präsentations-URL angezeigt.
  2. Öffnen Sie die URL in Ihrem Browser. Sie sollten eine Folienpräsentation mit Aufzählungszeichen sehen.

Präsentationsentwurf

11. Ideen für weitere Videos

Neben diesen drei Integrationen können Sie auch die folgenden Ideen ausprobieren:

  • Chatbot in Google Chat erstellen Einer der beliebtesten Anwendungsfälle für Large Language Models (LLMs) ist die Entwicklung eines Chatbots. Mit der Gemini API ist es ganz einfach, einen Chatbot für Google Chat zu erstellen. Weitere Informationen finden Sie in der Google Chat API und im Codelab Apps für Google Chat mit Gemini erstellen.
  • Retrieval-Augmented Generation (RAG) mit Ihren eigenen Daten in Google Drive oder Google Notizen: In diesem Codelab verwenden Sie nur eine einzelne Textdatei für die Zusammenfassung. Sie können jedoch auch die Inhalte aus Ihrem privaten Google Drive und Keep – z. B. Notizen, PDFs und Bilder – mit der Gemini API, einer Vektordatenbank und optional einem Orchestrierungstool wie LangChain verwenden, um RAG durchzuführen und die Antwort des Modells basierend auf Ihren Daten zu personalisieren.
  • Multiturn-Funktionsaufrufe der Gemini API verwenden: Der Funktionsaufruf der Gemini API ist nicht auf einen einzelnen Durchlauf beschränkt. Sie können Funktionsaufrufe mit mehreren Durchläufen für noch komplexere Aufgaben verwenden.
  • Über Google Workspace hinaus Nachdem Sie nun wissen, wie Sie die Gemini API in Google Workspace einbinden, können Sie auch andere APIs nutzen.

12. Glückwunsch

Sie haben die multimodalen Funktionen und Funktionsaufrufe der Gemini API kennengelernt. Sie haben sie verwendet, um einige Google Workspace-Aufgaben mit Apps Script zu automatisieren.

Weitere Informationen