Workflow über Google Tabellen auslösen


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

In diesem Tutorial wird gezeigt, wie Sie Workflows Google Tabellen.

Lernziele

In dieser Anleitung wird Folgendes beschrieben:

  1. Verwenden Sie Google Formulare, ein cloudbasiertes und Umfragelösung, um ein Formular zu erstellen, über das VM-Instanzen erstellen können.
  2. Verknüpfen Sie eine Google-Tabelle mit dem Formular, um beliebige Antworten.
  3. Verwenden Sie Google Apps Script, ein cloudbasierte JavaScript-Plattform nutzen, mit der Sie und Google Workspace-Produkte bearbeiten, um bei jeder Anfrage durch eine Aktualisierung der Tabelle genehmigt wird.
  4. Stellen Sie einen Workflow bereit, der die Compute Engine API-Connector und erstellt basierend auf den Spezifikationen eine Compute Engine-VM-Instanz. die über das Formular erfasst wurden. Connectors vereinfachen das Aufrufen anderer Google Cloud-Dienste APIs Weitere Informationen zu Workflows-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.

In dieser Anleitung wird auch Google Workspace verwendet. Dienste für Unternehmen, die nicht in den kostenlosen Google-Apps für Nutzer enthalten sind abrechenbar sind.

Hinweise

Sie können einige der folgenden Befehle in der Google Cloud Console ausführen oder Verwenden Sie die Google Cloud CLI in Ihrem Terminal oder in Cloud Shell.

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 das 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 und Workflows APIs.

    Aktivieren Sie die APIs

  4. Notieren Sie sich die Standardmäßiges Compute Engine-Dienstkonto da Sie es mit dem Workflow in dieser Anleitung verknüpfen, zu verstehen. Neue Projekte, für die die Compute Engine API aktiviert ist dieses Dienstkonto mit der IAM-Basic- Bearbeiterrolle mit folgendem E-Mail-Format:

    PROJECT_NUMBER[email protected]

    Ihre Projektnummer finden Sie auf der Willkommen Seite der Google Cloud Console.

    Für Produktionsumgebungen empfehlen wir dringend, Erstellen eines neuen Dienstkontos und und ihm eine oder mehrere IAM-Rollen zuweisen, die den Erforderliche Mindestberechtigungen und folgen dem Prinzip der geringste Berechtigung:

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 das 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 und Workflows APIs.

    gcloud services enable \
        compute.googleapis.com \
        workflows.googleapis.com
    
  4. Notieren Sie sich die Standardmäßiges Compute Engine-Dienstkonto da Sie es mit dem Workflow in dieser Anleitung verknüpfen, zu verstehen. Neue Projekte, für die die Compute Engine API aktiviert ist dieses Dienstkonto mit der IAM-Basic- Bearbeiterrolle mit folgendem E-Mail-Format:

    PROJECT_NUMBER[email protected]

    So rufen Sie Ihre Projektnummer ab:

    gcloud projects describe PROJECT_ID
    

    Für Produktionsumgebungen empfehlen wir dringend, Erstellen eines neuen Dienstkontos und und ihm eine oder mehrere IAM-Rollen zuweisen, die den Erforderliche Mindestberechtigungen und folgen dem Prinzip der geringste Berechtigung:

Formular zum Anfordern von VM-Instanzen erstellen

Erstellen Sie ein Formular, mit dem Sie eine Anfrage zur Erstellung eines Compute Engine-VM-Instanz Wenn Sie ein Formular über Google Formulare erstellen, Google Drive

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

    Ein neues Formular wird geöffnet.

  3. Erstellen Sie ein Formular mit fünf Pflichtfeldern. Das Formular sollte ähnlich aussehen, in:

    Beispielformular ansehen

    Beispiel für ein Formular zum Anfordern der Erstellung einer Google Cloud Virtual Machine
    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
    Laufwerksgröß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 das Formular ausfüllen. in Ihr Formular:
    1. Klicken Sie auf Einstellungen.
    2. Maximieren Sie den Bereich Antworten.
    3. Klicken Sie auf die Ein/Aus-Schaltfläche E-Mail-Adressen erfassen.

Nachdem Sie ein Formular erstellt haben, können Sie eine Tabelle damit verknüpfen, in dieser Tabelle. Die Tabelle wird gespeichert in Google Drive

  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 Neu erstellen Tabelle.
  5. Klicken Sie auf Erstellen.

    Die verknüpfte Tabelle wird geöffnet.

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

  7. Platzieren Sie den Cursor in der ersten Zeile von Spalte H und wählen Sie Einfügen > Kästchen.

    Die Tabelle sollte in etwa so aussehen:

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

    Jedes Mal, wenn das Tabellenblatt mit einer Antwort aktualisiert wird, wird das Kästchen ebenfalls angezeigt in die Zeile für diese Antwort ein.

Google Tabellen mit Apps Script erweitern

Mit Apps Script können Sie Inhalte programmatisch erstellen, lesen und bearbeiten Google Tabellen. Die meisten für Google Tabellen entwickelten Skripts Arrays, um mit den Zellen, Zeilen und Spalten in einer Tabellenkalkulation zu interagieren. Für eine eine Einführung in die Verwendung von Apps Script mit Google Tabellen, siehe Kurzanleitung zu benutzerdefinierten Funktionen

  1. So erstellen Sie ein Apps Script-Projekt über Google Tabellen:

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

    Das Skript ist jetzt mit Ihrer Tabelle verbunden. mit der das Skript die Benutzeroberfläche oder wenn die Tabelle geöffnet wird.

    Ein Skriptprojekt repräsentiert eine Sammlung von Apps Script Dateien und Ressourcen. Codedateien in einem Skriptprojekt haben einen .gs .

  2. Mit Apps Script können Sie benutzerdefinierte Funktionen schreiben, die in Google Tabellen genauso wie eine integrierte Funktion verwendet werden kann. Benutzerdefinierte Funktionen sind die mit Standard-JavaScript erstellt wurden. Erstellen Sie eine Funktion:

    1. Öffnen Sie Ihr Apps Script-Projekt.
    2. Klicken Sie auf Bearbeiter .
    3. Eine Skriptdatei wird als Projektdatei mit dem Namen Code.gs angezeigt. So bearbeiten Sie die Datei: wählen Sie es aus.
    4. Ersetzen Sie jeden Code im Script-Editor durch den folgenden Code, der Folgendes liest: Daten in Ihrer Tabellenkalkulation und übergibt sie als Eingabe an einen Workflow Ausführung:

      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 Console.

    6. Klicken Sie auf „Speichern“ .

  3. Google Apps-Skript installierbare Trigger Ein Skriptprojekt soll eine bestimmte Funktion ausführen, wenn bestimmte Bedingungen erfüllt sind z. B. wenn eine Tabelle geöffnet oder bearbeitet wird. Erstellen Sie einen Trigger:

    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 den Trigger:
      1. Wählen Sie in der Liste Auswählen, welche Funktion ausgeführt werden soll die Option handleEdit aus.
      2. Wählen Sie in der Liste Auswählen, welche Bereitstellung ausgeführt werden soll die Option Head aus.
      3. Wählen Sie in der Liste Ereignisquelle auswählen die Option Aus Tabelle aus.
      4. Wählen Sie in der Liste Ereignistyp auswählen die Option Beim Bearbeiten aus.
      5. Wählen Sie in der Liste Benachrichtigungseinstellungen bei Fehlern 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 und klicken Sie dann auf Zulassen.

      So kann Ihr Apps Script-Projekt Tabellen in Google Tabellen erstellen und löschen, und eine Verbindung zu einem externen Dienst.

  4. Eine Manifestdatei eines Apps Script-Projekts ist eine JSON-Datei mit grundlegenden Projektinformationen, Apps Script muss ein Script erfolgreich ausführen. Das Feld Im Apps Script-Editor werden Manifestdateien standardmäßig ausgeblendet, um Apps Script zu schützen Projekteinstellungen. Bearbeiten Sie die Manifestdatei:

    1. Öffnen Sie Ihr Apps Script-Projekt.
    2. Klicken Sie auf Projekteinstellungen .
    3. Aktivieren Sie das Kontrollkästchen "appsscript.json" anzeigen Manifestdatei im Editor an.
    4. Klicken Sie auf Bearbeiter .
    5. Die Manifestdatei wird als Projektdatei mit dem Namen appsscript.json angezeigt. Bis die Datei bearbeiten, wählen Sie sie aus.
    6. Das Feld oauthScopes gibt ein Array von Strings an. So legen Sie den Autorisierungsbereiche Ihrem Projekt verwenden, fügen Sie ein Array mit den Bereichen hinzu, die unterstützt werden sollen. 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 festgelegt auf:

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

Workflow zum Erstellen einer VM-Instanz bereitstellen

Einen Workflow bereitstellen, der ausgelöst wird, wenn eine Anfrage zum Erstellen einer VM-Instanz ausgelöst wird genehmigt. Der Workflow ruft die Methode Compute Engine API-Connector zum Erstellen einer Compute Engine-VM-Instanz basierend auf den Spezifikationen die über das Formular erfasst wurden.

Console

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

    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 die Compute Engine-Standardeinstellung aus. Dienstkonto (PROJECT_NUMBER[email protected]).

  6. Klicken Sie auf Weiter.

  7. Geben Sie im Workflow-Editor die folgende Definition für den 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 in einem Texteditor den folgenden Workflow 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[email protected]

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

    gcloud projects describe PROJECT_ID
    

End-to-End-Ablauf testen

Prüfen Sie, ob alles wie erwartet funktioniert, indem Sie den gesamten .

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

    Prüfen Sie, ob 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-Maschinen 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 Tabellen 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 .

    Der 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. Öffnen Sie in der Google Cloud Console die Seite Workflows.

      Zur Seite "Workflows"

    2. Klicken Sie auf der Seite Workflows auf das create-vm-from-form, um die zugehörige Detailseite aufzurufen.

    3. So rufen Sie auf der Seite Workflowdetails die Details für eine klicken Sie auf die entsprechende Ausführungs-ID.

      Der Ausführungsstatus sollte Erfolgreich lauten. sollten Sie die angeforderten VM-Spezifikationen sehen.

    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 wie erwartet eine neue VM 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

    Rufen Sie eine zusammengefasste 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 entsprechenden 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. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

In dieser Anleitung erstellte Ressourcen löschen

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

Nächste Schritte