Workflows über Google Tabellen auslösen


Google Tabellen ist eine cloudbasierte Tabellenkalkulationslösung, die die Zusammenarbeit in Echtzeit unterstützt und Tools zum Visualisieren, Verarbeiten und Kommunizieren von Daten bietet.

In dieser Anleitung wird gezeigt, wie Sie Workflows über Google Tabellen auslösen.

Lernziele

In dieser Anleitung wird Folgendes beschrieben:

  1. Mit Google Formulare, einer cloudbasierten Lösung für Fragebögen und Umfragen, können Sie ein Formular erstellen, mit dem Anfragen zum Erstellen von VM-Instanzen gesendet werden können.
  2. Verknüpfen Sie eine Google Sheets-Tabelle mit dem Formular, um alle Antworten zu erfassen und zu speichern.
  3. Verwenden Sie Google Apps Script, eine cloudbasierte JavaScript-Plattform, mit der Sie Google Workspace-Produkte programmatisch erstellen, lesen und bearbeiten können, um einen Workflow auszulösen, wenn eine Anfrage durch eine Aktualisierung der Tabelle genehmigt wird.
  4. Stellen Sie einen Workflow bereit, der den Compute Engine API-Connector aufruft und eine Compute Engine-VM-Instanz basierend auf den über das Formular erfassten Spezifikationen erstellt. Connectors vereinfachen den Aufruf anderer Google Cloud-APIs. Weitere Informationen zu Workflow-Connectors
  5. Testen Sie den gesamten Prozess und prüfen Sie, ob eine VM-Instanz wie erwartet erstellt wird.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Neuen Google Cloud Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Im Tutorial wird auch Google Workspace verwendet. Dienste für Unternehmen, die nicht in den kostenlosen Google-Apps für Privatnutzer enthalten sind, sind kostenpflichtig.

Hinweise

Einige der folgenden Befehle können Sie in der Google Cloud -Konsole oder über die Google Cloud CLI entweder in Ihrem Terminal oder in Cloud Shell ausführen.

Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud -Umgebung entwickeln.

Console

  1. Wählen Sie in der Google Cloud -Console auf der Seite der Projektauswahl ein Google Cloud -Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Die Abrechnung für Ihr Google Cloud -Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  3. Aktivieren Sie die Compute Engine API und die Workflows API.

    Aktivieren Sie die APIs

  4. Notieren Sie sich das Compute Engine-Standarddienstkonto, das Sie in dieser Anleitung zu Testzwecken mit dem Workflow verknüpfen. Für neue Projekte, für die die Compute Engine API aktiviert ist, wird dieses Dienstkonto mit der grundlegenden IAM-Rolle „Bearbeiter“ und dem folgenden E-Mail-Format erstellt:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud -Konsole.

    Für Produktionsumgebungen empfehlen wir dringend, ein neues Dienstkonto zu erstellen und ihm eine oder mehrere IAM-Rollen zuzuweisen, die die erforderlichen Mindestberechtigungen enthalten und dem Grundsatz der geringsten Berechtigung folgen.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Die Abrechnung für Ihr Google Cloud -Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  3. Aktivieren Sie die Compute Engine API und die Workflows API.

    gcloud services enable \
        compute.googleapis.com \
        workflows.googleapis.com
  4. Notieren Sie sich das Compute Engine-Standarddienstkonto, das Sie in dieser Anleitung zu Testzwecken mit dem Workflow verknüpfen. Für neue Projekte, für die die Compute Engine API aktiviert ist, wird dieses Dienstkonto mit der grundlegenden IAM-Rolle „Bearbeiter“ und dem folgenden E-Mail-Format erstellt:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    So rufen Sie Ihre Projektnummer ab:

    gcloud projects describe PROJECT_ID

    Für Produktionsumgebungen empfehlen wir dringend, ein neues Dienstkonto zu erstellen und ihm eine oder mehrere IAM-Rollen zuzuweisen, die die erforderlichen Mindestberechtigungen enthalten und dem Grundsatz der geringsten Berechtigung folgen.

Formular zum Anfordern von VM-Instanzen erstellen

Erstellen Sie ein Formular, mit dem eine Anfrage zum Erstellen einer Compute Engine-VM-Instanz gesendet werden kann. Wenn Sie ein Formular über Google Formulare erstellen, wird es standardmäßig in Google Drive gespeichert.

  1. Rufen Sie forms.google.com auf.
  2. Klicken Sie auf Leer Plus.

    Ein neues Formular wird geöffnet.

  3. Erstelle ein Formular mit fünf erforderlichen Abschnitten. Das Formular sollte in etwa so aussehen:

    Beispielformular ansehen

    Beispiel für ein Formular zum Anfordern der Erstellung einer Google Cloud-VM
    Computername

    Kurzantworttext

    Zone

    Drop-down-Menü:

    1. us-central1-a
    2. us-central1-b
    3. us-central1-c
    4. us-central1-f
    Typ

    Drop-down-Menü:

    1. e2-micro
    2. e2-small
    3. e2-medium
    4. e2-standard-2
    5. e2-standard-4
    Laufwerkgröße (GB)

    Kurzantworttext

    Betriebssystem

    Drop-down-Menü:

    1. debian-10
    2. centos-stream-9
    3. cos-93-lts
    4. cos-97-lts
  4. Aktivieren Sie die Erfassung von E-Mail-Adressen, um die E-Mail-Adressen der Personen zu erfassen, die Ihr Formular ausfüllen:
    1. Klicken Sie auf Einstellungen.
    2. Maximieren Sie den Bereich Antworten.
    3. Klicken Sie auf den Schalter E-Mail-Adressen erfassen.

Nachdem Sie ein Formular erstellt haben, verknüpfen Sie es mit einer Tabelle, damit Sie die Antworten auf das Formular in dieser Tabelle speichern können. Die Tabelle wird in Drive gespeichert.

  1. Öffnen Sie Ihr Formular in Google Formulare.
  2. Klicken Sie auf Antworten.
  3. Klicken Sie auf Mit Google Tabellen verknüpfen.
  4. Wählen Sie im Dialogfeld Ziel für Antworten auswählen die Option Neue Tabelle erstellen aus.
  5. Klicken Sie auf Erstellen.

    Die verknüpfte Tabelle wird geöffnet.

  6. Fügen Sie in Spalte H die Überschrift Genehmigt? hinzu.

  7. Setzen Sie den Cursor in die erste Zeile der Spalte H und wählen Sie Einfügen > Kästchen aus.

    Die Tabelle sollte in etwa so aussehen:

    Beispiel für eine verknüpfte Tabelle zum Erfassen von Anfragen

    Jedes Mal, wenn die Tabelle mit einer Antwort aktualisiert wird, wird das Kästchen auch in der Zeile für diese Antwort angezeigt.

Google Sheets mit Apps Script erweitern

Mit Apps Script können Sie Tabellen programmatisch erstellen, lesen und bearbeiten. Die meisten für Google Sheets entwickelten Scripts bearbeiten Arrays, um mit den Zellen, Zeilen und Spalten in einer Tabelle zu interagieren. Eine Einführung in die Verwendung von Apps Script mit Google Sheets finden Sie in der Kurzanleitung für benutzerdefinierte Funktionen.

  1. Apps Script-Projekt in Google Sheets erstellen:

    1. Öffnen Sie die Google-Tabelle.
    2. Wählen Sie Erweiterungen > Apps Script aus.
    3. Klicken Sie im Script-Editor auf Unbenanntes Projekt.
    4. Geben Sie Ihrem Projekt einen Namen und klicken Sie auf Umbenennen.

    Ihr Script ist jetzt an Ihre Tabelle gebunden. Dadurch kann es die Benutzeroberfläche ändern oder reagieren, wenn die Tabelle geöffnet wird.

    Ein Skriptprojekt ist eine Sammlung von Apps Script-Dateien und -Ressourcen. Code-Dateien in einem Script-Projekt haben die Erweiterung .gs.

  2. Mit Apps Script können Sie benutzerdefinierte Funktionen schreiben, die Sie in Google Tabellen wie eine integrierte Funktion verwenden können. Benutzerdefinierte Funktionen werden mit Standard-JavaScript erstellt. So erstellen Sie eine Funktion:

    1. Öffnen Sie Ihr Apps Script-Projekt.
    2. Klicken Sie auf Editor .
    3. Eine Skriptdatei wird als Projektdatei mit dem Namen Code.gs angezeigt. Wählen Sie die Datei aus, um sie zu bearbeiten.
    4. Ersetzen Sie den Code im Script-Editor durch den folgenden Code, der die Daten in Ihrem Tabellenblatt liest und als Eingabe für die Ausführung eines Workflows übergibt:

      const PROJECT_ID = "your-project-id";
      const REGION = "us-central1";
      const WORKFLOW = "create-vm-from-form";
      
      function handleEdit(e) {
        var range = e.range.getA1Notation();
        var sheet = e.source;
      
        if (range.length > 1 && range[0] === 'H') {
          if (e.value == "TRUE") {
            Logger.log("Approved checkbox: true");
      
            var row = range.slice(1)
            var email = sheet.getRange('B' + row).getCell(1, 1).getValue()
            var vmName = sheet.getRange('c' + row).getCell(1, 1).getValue()
            var zone = sheet.getRange('D' + row).getCell(1, 1).getValue()
            var machineType = sheet.getRange('E' + row).getCell(1, 1).getValue()
            var diskSize = sheet.getRange('F' + row).getCell(1, 1).getValue()
            var imageFamily = sheet.getRange('G' + row).getCell(1, 1).getValue()
            var imageProject = imageFamily.substring(0, imageFamily.indexOf('-')) + "-cloud"
      
            const executionPayload = {
              "argument": "{\"diskSize\": \"" + diskSize + "\", \"email\": \"" + email + "\", \"imageFamily\": \"" + imageFamily + "\", \"imageProject\": \"" + imageProject + "\", \"machineType\": \"" + machineType + "\", \"vmName\": \"" + vmName + "\", \"zone\": \"" + zone +  "\"}"
            };
      
            approve(executionPayload);
          }
          else {
            Logger.log("Approved checkbox: false");
          }
        }
      }
      
      function approve(executionPayload) {
        const headers = {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        };
      
        const params = {
          "method": 'post',
          "contentType": 'application/json',
          "headers": headers,
          "payload": JSON.stringify(executionPayload)
        };
      
        const url = "https://workflowexecutions.googleapis.com/v1/projects/" + PROJECT_ID + "/locations/" + REGION + "/workflows/" + WORKFLOW + "/executions";
      
        Logger.log("Workflow execution request to " + url);
        var response = UrlFetchApp.fetch(url, params);
        Logger.log(response);
      }
    5. Ersetzen Sie your-project-id durch Ihre Google Cloud Projekt-ID.

      Sie finden Ihre Projekt-ID auf der Willkommensseite der Google Cloud -Konsole.

    6. Klicken Sie auf „Speichern“ .

  3. Mit installierbaren Triggern in Apps Script kann ein Skriptprojekt eine bestimmte Funktion ausführen, wenn bestimmte Bedingungen erfüllt sind, z. B. wenn eine Tabelle geöffnet oder bearbeitet wird. Trigger erstellen:

    1. Öffnen Sie Ihr Apps Script-Projekt.
    2. Klicken Sie auf Trigger .
    3. Klicken Sie auf Trigger hinzufügen.
    4. Konfigurieren Sie im Dialogfeld Trigger für YOUR_PROJECT_NAME hinzufügen den Trigger:
      1. Wählen Sie in der Liste Auszuführende Funktion auswählen die Option handleEdit aus.
      2. Wählen Sie in der Liste Auszuführende Bereitstellung auswählen die Option Head aus.
      3. Wählen Sie in der Liste Ereignisquelle auswählen die Option Aus Tabellenkalkulation aus.
      4. Wählen Sie in der Liste Ereignistyp auswählen die Option Bei Bearbeitung aus.
      5. Wählen Sie in der Liste Einstellungen für Fehlerbenachrichtigungen die Option Täglich benachrichtigen aus.
    5. Klicken Sie auf Speichern.
    6. Wenn Sie aufgefordert werden, ein Google-Konto auszuwählen, wählen Sie das entsprechende Konto aus und klicken Sie auf Zulassen.

      Dadurch kann Ihr Apps Script-Projekt Ihre Google-Tabellen aufrufen, bearbeiten, erstellen und löschen sowie eine Verbindung zu einem externen Dienst herstellen.

  4. Die Manifestdatei eines Apps Script-Projekts ist eine JSON-Datei, in der grundlegende Projektinformationen angegeben sind, die Apps Script benötigt, um ein Script erfolgreich auszuführen. Hinweis: Im Apps Script-Editor werden Manifestdateien standardmäßig ausgeblendet, um die Einstellungen Ihres Apps Script-Projekts zu schützen. Manifestdatei bearbeiten:

    1. Öffnen Sie Ihr Apps Script-Projekt.
    2. Klicken Sie auf Projekteinstellungen .
    3. Klicken Sie das Kästchen Manifestdatei „appsscript.json“ im Editor anzeigen an.
    4. Klicken Sie auf Editor .
    5. Die Manifestdatei wird als Projektdatei mit dem Namen appsscript.json angezeigt. Wählen Sie die Datei aus, um sie zu bearbeiten.
    6. Das Feld oauthScopes gibt ein Array von Strings an. Wenn Sie die Autorisierungsbereiche festlegen möchten, die Ihr Projekt verwendet, fügen Sie ein Array mit den gewünschten Bereichen hinzu. Beispiel:

      {
        "timeZone": "America/Toronto",
        "dependencies": {
        },
        "exceptionLogging": "STACKDRIVER",
        "runtimeVersion": "V8",
        "oauthScopes": [
          "https://www.googleapis.com/auth/script.external_request",
          "https://www.googleapis.com/auth/cloud-platform",
          "https://www.googleapis.com/auth/spreadsheets"
        ]
      }

      Dadurch werden explizite Bereiche auf Folgendes festgelegt:

      • Verbindung mit externem Dienst herstellen
      • Ihre Google Cloud -Daten aufrufen, bearbeiten, konfigurieren und löschen sowie die E-Mail-Adresse Ihres Google-Kontos sehen
      • Alle Ihre Google Tabellen-Tabellen aufrufen, bearbeiten, erstellen oder löschen
    7. Klicken Sie auf „Speichern“ .

Workflow zum Erstellen einer VM-Instanz bereitstellen

Stellen Sie einen Workflow bereit, der ausgelöst wird, wenn eine Anfrage zum Erstellen einer VM-Instanz genehmigt wird. Der Workflow ruft den Compute Engine API-Connector auf, um eine Compute Engine-VM-Instanz basierend auf den über das Formular erfassten Spezifikationen zu erstellen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Workflows auf:

    Zur Seite "Workflows"

  2. Klicken Sie auf  Erstellen.

  3. Geben Sie einen Namen für den neuen Workflow ein: create-vm-from-form.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  5. Wählen Sie für das Dienstkonto das Compute Engine-Standarddienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com) aus.

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die folgende Definition für Ihren Workflow ein:

    main:
       params: [input]
       steps:
       - init:
           assign:
                - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - zone: ${input.zone}
                - machineType: ${input.machineType}
                - diskSize: ${input.diskSize}
                - imageProject: ${input.imageProject}
                - imageFamily: ${input.imageFamily}
                - vmName: ${input.vmName}
                - email: ${input.email}
       - createResource:
           call: googleapis.compute.v1.instances.insert
           args:
               project: ${projectId}
               zone: ${zone}
               body:
                   name: ${vmName}
                   machineType: ${"projects/" + projectId + "/zones/" + zone + "/machineTypes/" + machineType}
                   disks:
                    - initializeParams:
                        diskSizeGb: ${diskSize}
                        sourceImage: ${"projects/" + imageProject + "/global/images/family/" + imageFamily}
                      type: PERSISTENT
                      boot: true
                      autoDelete: true
                   networkInterfaces:
                    - network: "global/networks/default"
           result: insertResult
       - retStep:
           return: ${insertResult}
  8. Klicken Sie auf Bereitstellen.

gcloud

  1. Erstellen Sie eine Quellcodedatei für Ihren Workflow:

    touch create-vm-from-form.yaml
  2. Kopieren Sie den folgenden Workflow in einem Texteditor in Ihre Quellcodedatei:

    main:
       params: [input]
       steps:
       - init:
           assign:
                - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                - zone: ${input.zone}
                - machineType: ${input.machineType}
                - diskSize: ${input.diskSize}
                - imageProject: ${input.imageProject}
                - imageFamily: ${input.imageFamily}
                - vmName: ${input.vmName}
                - email: ${input.email}
       - createResource:
           call: googleapis.compute.v1.instances.insert
           args:
               project: ${projectId}
               zone: ${zone}
               body:
                   name: ${vmName}
                   machineType: ${"projects/" + projectId + "/zones/" + zone + "/machineTypes/" + machineType}
                   disks:
                    - initializeParams:
                        diskSizeGb: ${diskSize}
                        sourceImage: ${"projects/" + imageProject + "/global/images/family/" + imageFamily}
                      type: PERSISTENT
                      boot: true
                      autoDelete: true
                   networkInterfaces:
                    - network: "global/networks/default"
           result: insertResult
       - retStep:
           return: ${insertResult}
  3. Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:

    gcloud workflows deploy create-vm-from-form \
        --source=create-vm-from-form.yaml \
        --location=us-central1 \
        --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Ersetzen Sie PROJECT_NUMBER durch die Projektnummer Ihres Google Cloud-Projekts. So rufen Sie Ihre Projektnummer ab:

    gcloud projects describe PROJECT_ID

End-to-End-Ablauf testen

Um zu bestätigen, dass alles wie erwartet funktioniert, sollten Sie den gesamten Prozess durchlaufen.

  1. Senden Sie das Formular an sich selbst und beantworten Sie die Fragen entsprechend.

    Achten Sie darauf, dass die Spezifikationen, die Sie zum Erstellen einer VM-Instanz verwenden, gültig sind. Andernfalls schlägt die Workflowausführung fehl. Weitere Informationen finden Sie unter Compute Engine-Maschinenfamilie für allgemeine Zwecke.

  2. Klicken Sie auf Senden, um Ihre Antwort zu senden.

  3. Öffnen Sie Ihr Formular in Google Formulare.

  4. Klicken Sie auf Antworten.

  5. Klicken Sie auf In Google Sheets ansehen.

    Die verknüpfte Tabelle wird geöffnet.

  6. Klicken Sie in der Zeile für Ihre Antwort das Kästchen Genehmigt? an.

  7. Öffnen Sie Ihr Apps Script-Projekt.

  8. Klicken Sie auf Ausführungen .

    Ihr Trigger sollte ausgeführt und mit dem Status Completed aufgeführt werden.

  9. Prüfen Sie, ob der create-vm-from-form-Workflow erfolgreich abgeschlossen wurde:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Workflows auf.

      Zur Seite "Workflows"

    2. Klicken Sie auf der Seite Workflows auf den Workflow create-vm-from-form, um die Detailseite aufzurufen.

    3. Klicken Sie auf der Seite Workflow-Details auf die entsprechende Ausführungs-ID, um die Details für eine bestimmte Ausführung abzurufen.

      Der Ausführungsstatus sollte Erfolgreich lauten und im Bereich „Eingabe“ sollten die von Ihnen angeforderten VM-Spezifikationen angezeigt werden.

    gcloud

    Rufen Sie eine Liste der Ausführungsversuche Ihres Workflows ab:

    gcloud workflows executions list create-vm-from-form

    Das Ergebnis sollte in etwa so aussehen:

    NAME: projects/918619793306/locations/us-central1/workflows/create-vm-from-form/executions/d8947ecb-9ccb-4ea1-ba10-e5c10414e3be
    STATE: SUCCEEDED
    START_TIME: 2023-01-24T15:07:40.404741791Z
    END_TIME: 2023-01-24T15:07:55.649373625Z
  10. Prüfen Sie, ob eine neue VM wie erwartet erstellt wurde:

    Console

    Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    Zu Seite „VM-Instanzen“

    Ihre VM-Instanz sollte mit einem Status aufgeführt sein, der angibt, dass sie ausgeführt wird.

    gcloud

    So rufen Sie eine aggregierte Liste aller VMs in allen Zonen für ein Projekt ab:

    gcloud compute instances list

    Ihre VM-Instanz sollte mit einem Status aufgeführt sein, der angibt, dass sie ausgeführt wird.

    Weitere Informationen zum Befehl gcloud compute instances list finden Sie auf der Referenzseite.

Bereinigen

Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

In dieser Anleitung erstellte Ressourcen löschen

  1. Dateien in Drive löschen
  2. Compute Engine-VM-Instanz löschen
  3. Workflow löschen

Nächste Schritte