Google Workspace-Aufgaben mit der Gemini API automatisieren

1. Hinweis

In diesem Codelab erfahren Sie, wie Sie Google Workspace-Aufgaben mit Funktionsaufrufen und multimodalen Funktionen der Gemini API automatisieren.

Vorbereitung

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

Lerninhalte

  • So nutzen Sie die Funktionen von Funktionsaufrufen und multimodalen Funktionen der Gemini API.
  • So verketten Sie mehrere Gemini API-Aufrufe miteinander.
  • Google Workspace-Aufgaben mit der Gemini API automatisieren

Voraussetzungen

  • Einen Webbrowser.
  • Ein Gmail-Konto. Alternativ können Sie ein Google Workspace-Konto haben, in dem die spezifische Einrichtung der Gemini API implementiert ist.
  • Eine Verbindung von einer unterstützten Region für die Gemini API.
  • Optional: Eine Befehlszeile 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. Sehen Sie dort nach, ob Sie den fertigen Code benötigen.

2. Gemini API einrichten

Über Gemini

Die Gemini-Modelle sind die größte und leistungsstärkste KI-Modellfamilie 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, einer Weboberfläche für die API. Hier können Sie Prompts ausprobieren, Modelleinstellungen optimieren und benutzerdefinierte Modelle optimieren, ohne Code schreiben zu müssen.

Schlüssel abrufen

Optional: Schlüssel testen

Wenn Sie Zugriff auf eine Befehlszeile mit curl haben, 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 der Modelle im JSON-Format sehen, z. B. „models/gemini-1.0-pro“. Das bedeutet, dass es funktioniert hat.

3. Optional: Anfrage an die Gemini API stellen

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

Informationen zu den Modellen

Die Gemini API bietet eine Reihe von Modellen mit unterschiedlichen Funktionen und Einschränkungen. Die einzelnen Modelle sind mit ihren Funktionen auf der Seite „Gemini-Modelle“ aufgeführt.

Erste Anfrage stellen

Damit die Gemini API einen Text-Prompt ausführen kann, 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 dann diese Anweisung aus und liefert Ihnen das Ergebnis direkt.

Die JSON-Anfrage enthält 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 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 besseren Lesbarkeit ist im Folgenden die Terminalausgabe regelmäßig formatiert:

  • Glaubwürdigkeit:Die Zielgruppe muss darauf vertrauen, dass Sie ein Experte auf diesem Gebiet sind und dass Sie in ihren besten Interessen arbeiten.
  • Klarheit:Ihre Botschaft muss leicht verständlich sein und Ihnen folgen. Vermeiden Sie Fachjargon oder Fachbegriffe, mit denen Ihre Zielgruppe möglicherweise nicht vertraut ist.
  • Konkretheit:Unterstützen Sie Ihre Argumente anhand konkreter Beispiele und Daten. Vermeiden Sie ungenaue oder allgemeine Behauptungen.
  • Emotionale Ansprache:Neben der logischen Seite deiner Zuschauer solltest du auch eine emotionale Bindung zu ihnen aufbauen. Nutzen Sie Storytelling, Humor und persönliche Anekdoten, um Ihre Punkte einprägsamer und interessanter zu gestalten.
  • Starker Abschluss: Beenden Sie die Präsentation mit einem überzeugenden Call-to-Action. Sagen Sie der Zielgruppe, was sie tun sollen und warum es für sie wichtig ist, das zu tun.

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

4. Gemini API über Apps Script aufrufen

  1. Rufen Sie script.new auf. Es 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 auf 8bfe57773be886ab.png > Umbenennen.
  3. Ändern Sie den Dateinamen in utils.gs.
  4. Entfernen Sie in der Datei die Funktion myFunction, damit 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. Gehen Sie zurück zum Editor.

Gemini API-Code hinzufügen

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

Richten Sie den API-Schlüssel und den Endpunkt ein:

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, um den Prompt festzulegen:
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 der Funktion testGemini aus und klicken Sie auf 5b9034ff679c8761.png.
  3. Akzeptieren Sie die erforderlichen Berechtigungen. Ihr 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. Sie können also mehr als nur Text bereitstellen. In diesem Abschnitt fügen Sie eine Funktion hinzu, die die Gemini API mit einem Bild aufruft.

  • Fügen Sie am Anfang 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 ihn, um ein Diagramm aus einer Tabellenkalkulation zu verwenden. Dies ist also nur ein Test.

Testen

  • Speichern Sie die Funktion testGeminiVision, führen Sie sie aus und prüfen Sie dann die Ausgabe.

849c6728bfb5ec52.png

6. Gemini API mit Tools aufrufen

Neben Text und Bildern kannst du in deinen Prompts auch Zugriff auf Tools gewähren.

Code für die Toolbehandlung hinzufügen

  • Fügen Sie der Datei utils.gs eine Funktion hinzu, die eine Toolspezifikation 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 API-Referenz zu FunctionDeclaration.

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 Schema FunctionDeclaration. Die Datum-Uhrzeit-Funktion wird nicht wirklich aufgerufen. Sie erhalten lediglich einen Hinweis, dass das Modell einen Funktionsaufruf angefordert hat. Funktionsaufrufe werden in einem späteren Schritt verarbeitet.

  1. Speichern Sie die Datei und führen Sie die Funktion testGeminiTools aus, um sich die Ausgabe anzusehen.

Ausführungsprotokoll

7. Demointegrationen in Google Workspace

Sie wissen jetzt, wie Funktionsaufrufe funktionieren, und können 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 ist ein vereinfachtes Diagramm:

3 Tools

Im Allgemeinen verwenden Sie bei einer Nutzeranfrage den Funktionsaufruf der Gemini API, um zu bestimmen, welches Tool verwendet werden soll. Sie erstellen drei Tools, die Folgendes tun können:

  • Besprechung starten Die Funktion setupMeeting() im Diagramm ruft die Gemini 1.0 Pro API auf, um einen Blog in Google Drive zusammenzufassen und die Zusammenfassung einer neu erstellten Videokonferenz in Google Kalender hinzuzufügen.
  • Erstelle eine E-Mail basierend auf Erkenntnissen aus einem Diagramm. 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.
  • Erstelle eine Basispräsentation. Die Funktion createDeck() im Diagramm ruft Gemini 1.0 Pro auf, um Aufzählungspunkte für eine Präsentation in Google Präsentationen zu sammeln.

Führen Sie für jedes Tool die folgenden drei Schritte aus:

  1. Ermitteln Sie, ob die Antwort des Funktionsaufrufs der Gemini API das Aufrufen dieses bestimmten Tools in einem if...else-Block anfordert.
  2. Fügen Sie die eigentliche Funktion hinzu, um die Tool-Funktionen zu implementieren.
  3. Deklarieren Sie das Tool mit der Gemini API, damit das Gemini-Modell die Existenz des Tools erkennt und die richtige Antwort des Funktionsaufrufs zurückgeben kann.

8. Besprechungen mit Apps Script einrichten

Zuerst automatisieren Sie die Einrichtung einer Besprechung in Google Kalender. Sie fügen aber auch eine Beschreibung hinzu, bei der es sich um eine Zusammenfassung einer Datei in Google Drive handelt.

Führen Sie dazu die folgenden Schritte aus:

  1. Laden Sie diese Textdatei herunter. Sie ist das Textdokument für den Einführungsblog für Gemini 1.5 Pro.
  2. Laden Sie die Datei in den Stammordner von 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 für Funktionsaufrufe 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 verwenden müssen.

Dienst hinzufügen

  1. Fügen Sie 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 führt Folgendes aus:

  • Die Funktion setupMeeting() durchsucht Ihr Google Drive und sucht nach der Datei Gemini-blog.txt. Dieser Dateiname wird durch den Funktionsaufruf der Gemini API in Schritt 3 automatisch zurückgegeben.
  • Die Funktion setupMeeting() ruft die Gemini API auf, um den Inhalt der Datei zusammenzufassen, eine Besprechung mit der KalenderApp mit einer Freiformbeschreibung einzurichten und der Besprechung die Zusammenfassung hinzuzufügen.
  • Mit der Funktion setupMeeting() wird die Funktion attachFileToMeeting() aufgerufen, um die Blogdatei über den erweiterten Google Kalender-Dienst an die Besprechung anzuhängen.
  1. Fügen Sie oben in der Datei utils.gs den folgenden Code ein:
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. Gehen Sie im Editor zur Datei main.gs zurück und klicken Sie auf 5b9034ff679c8761.png.
  2. Wenn Sie in Google Workspace um Erlaubnis zum Ausführen des Skripts gebeten werden, klicken Sie auf OK.

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

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

Einladung zu Besprechung

9. E-Mail-Entwurf mit Apps Script

Als Nächstes automatisieren Sie den Entwurf einer E-Mail in Gmail. Hier ist das Szenario: Angenommen, Sie führen eine Datenanalyse in Google Tabellen durch. Sie legen alle Zahlen fest und erstellen ein Diagramm. Sie möchten die Gemini Pro Vision API verwenden, um eine E-Mail basierend auf dem Diagramm 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 Nutzerabfrage durch eine neue und fügen Sie dann den folgenden Code in die if...else-Anweisung ein:
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 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 der Hochschulausgaben aus dem Tabellenblatt ab und sendet es zum Entwurf der E-Mail an Gemini Pro Vision. Gemini Pro Vision extrahiert Informationen aus dem Diagramm und erstellt den E-Mail-Text für Sie.

  1. Fügen Sie in der Datei utils.gs dem Objekt WORKSPACE_TOOLS 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. Gehen Sie im Editor zurück zur Datei main.gs und klicken Sie auf 5b9034ff679c8761.png.
  2. Öffnen Sie Gmail in 10 bis 20 Sekunden. Sie sollten einen E-Mail-Entwurf wie diesen sehen:

Sie können den E-Mail-Entwurf vor dem Senden überarbeiten. Die E-Mail wird nach einem kurzen Prompt und dem Diagramm vollständig von Gemini Pro Vision geschrieben.

10. Mit Apps Script eine einfache Präsentation erstellen

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

Führen Sie dazu die folgenden Schritte aus:

  1. Ersetzen Sie in der Datei main.gs die vorherige Nutzerabfrage 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 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 ein Brainstorming zu einem bestimmten Thema durchzuführen und die Aufzählungspunkte im Format zurückzugeben.

aus JSON und verwenden Sie dann Apps Script, um ein grundlegendes Deck zu füllen.

  1. Fügen Sie in der Datei utils.gs dem Objekt WORKSPACE_TOOLS 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;

Das ist die Anzahl der Folien, die das Gemini-Modell zusätzlich zur Anfangsfolie erstellt.

  1. Gehen Sie im Editor zurück zur Datei main.gs und klicken Sie auf 5b9034ff679c8761.png. Nach wenigen Sekunden wird im Ausführungsprotokoll eine Präsentations-URL angezeigt.
  2. Öffnen Sie die URL in Ihrem Browser. Sie sollten ein Deck mit Aufzählungspunkten sehen.

Entwurfspräsentation

11. Vorschläge

Abgesehen von diesen drei Integrationen können Sie die folgenden Ideen ausprobieren:

  • Chatbot in Google Chat erstellen Einer der beliebtesten Anwendungsfälle für Large Language Models (LLMs) ist das Erstellen eines Chatbots. Mit der Gemini API ist es ganz einfach, einen Chatbot für Google Chat zu erstellen. Weitere Informationen findest du 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 Notizen: In diesem Codelab verwenden Sie nur eine einzige Textdatei für die Zusammenfassung. Sie können jedoch auch Inhalte aus Ihrem persönlichen Google Drive und Google Notizen wie Notizen, PDFs und Bilder mit der Gemini API, einer Vektordatenbank und optional einem Orchestrierungstool wie LangChain verwenden, um RAG zu erstellen und die Antwort des Modells auf der Grundlage Ihrer Daten zu personalisieren.
  • Nutzen Sie die Funktion zum Aufrufen von Funktionsaufrufen in mehreren Schritten der Gemini API. Die Funktionsaufrufe der Gemini API sind nicht auf einen Schritt beschränkt und Sie können für noch komplexere Aufgaben Funktionsaufrufe in mehreren Schritten ausführen.
  • Mehr als Google Workspace Sie wissen jetzt, wie Sie die Gemini API in Google Workspace einbinden können. Jetzt können Sie nicht nur Google Workspace, sondern auch andere APIs weltweit nutzen.

12. Glückwunsch

Sie haben mehr über die multimodalen Funktionen und Funktionsaufrufe der Gemini API erfahren. Sie haben damit einige Google Workspace-Aufgaben mit Apps Script automatisiert.

Weitere Informationen