Mit Workflows-Connectors können Sie das Abfragen eines BigQuery-Datasets und das Schreiben der Ergebnisse in eine Google Sheets-Tabelle automatisieren. Connectors vereinfachen das Aufrufen von Google Cloud APIs, da sie die Authentifizierung und die Formatierung von Anfragen in Ihrem Workflow übernehmen.
Hinweis
Bevor Sie das Beispiel in diesem Dokument ausprobieren, sollten Sie Folgendes tun.
Aktivieren Sie die Compute Engine API, die Google Drive API, die Google Sheets API und die Workflows API.
Console
gcloud
gcloud services enable \ compute.googleapis.com \ drive.googleapis.com \ sheets.googleapis.com \ workflows.googleapis.com
Notieren Sie sich das Compute Engine-Standarddienstkonto, da Sie es zu Testzwecken dem Beispielworkflow zuordnen. Für neue Projekte, für die die Compute Engine API aktiviert ist, wird dieses Dienstkonto mit der einfachen IAM-Rolle „Editor“ und dem folgenden E-Mail-Format erstellt:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder Sie können sie abrufen:
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.
Erstellen Sie einen neuen Ordner in Google Drive. In diesem Ordner wird Ihre Tabellenkalkulation gespeichert. Wenn Sie eine Berechtigung für den freigegebenen Ordner einrichten, darf Ihr Workflow in die Tabelle schreiben.
- Rufen Sie drive.google.com auf.
- Klicken Sie auf Neu > Neuer Ordner.
- Geben Sie einen Namen für den Ordner ein.
- Klicken Sie auf Erstellen.
- Klicken Sie mit der rechten Maustaste auf den neuen Ordner und wählen Sie Freigeben aus.
Fügen Sie die E-Mail-Adresse für das Compute Engine-Standarddienstkonto hinzu.
Dadurch erhält das Dienstkonto Zugriff auf den Ordner. Wenn Sie das Dienstkonto mit Ihrem Workflow verknüpfen, hat der Workflow Bearbeitungszugriff auf alle Dateien im Ordner. Weitere Informationen zum Freigeben von Dateien, Ordnern und Ablagen
Wählen Sie die Rolle Editor aus.
Entfernen Sie das Häkchen aus dem Kästchen Personen benachrichtigen.
Klicken Sie auf Freigeben.
Tabelle erstellen
Sie haben folgende Möglichkeiten, eine Tabelle zu erstellen:
Es gibt keine Möglichkeit, eine Tabelle direkt in einem bestimmten Ordner mit der Google Sheets API zu erstellen. Es gibt jedoch Alternativen, z. B. das Verschieben der Tabelle in einen bestimmten Ordner nach dem Erstellen, wie in den folgenden Beispielen. Weitere Informationen finden Sie unter Mit Google Drive-Ordnern arbeiten.
Tabelle mit Google Sheets erstellen
Wenn Sie eine Tabelle in Google Sheets erstellen, wird sie in Google Drive gespeichert. Standardmäßig wird die Tabelle in Ihrem Stammordner in Drive gespeichert.
Rufen Sie sheets.google.com auf.
Klicken Sie auf Neu
.
Dadurch wird eine neue Tabelle erstellt und geöffnet. Jede Tabelle hat einen eindeutigen
spreadsheetId-Wert, der Buchstaben, Ziffern, Bindestriche oder Unterstriche enthalten kann. Sie finden die Tabellen-ID in einer Google Sheets-URL:https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0Notieren Sie sich diese ID, da sie beim Erstellen des Workflows benötigt wird.
Verschieben Sie die Tabelle in den Google Drive-Ordner, den Sie zuvor erstellt haben:
- Wählen Sie in der Tabelle Datei>Verschieben aus.
- Rufen Sie den von Ihnen erstellten Ordner auf.
- Klicken Sie auf Verschieben.
Tabelle mit dem Google Sheets API-Connector erstellen
Mit dem Google Sheets API-Connector können Sie eine Tabelle erstellen. Da Workflows das Dienstkonto als Triggeridentität verwendet, wird die Tabelle im Google Drive-Stammordner des Dienstkontos erstellt. Anschließend können Sie die Tabelle in einen anderen Ordner verschieben.
Im folgenden Workflow wird spreadsheetId aus dem resp-Ergebnis abgerufen:
YAML
JSON
Ersetzen Sie FOLDER_ID durch die ID des Ordners, in den Sie die Tabelle verschieben möchten. Jeder Google Drive-Ordner hat eine eindeutige ID, die Buchstaben, Ziffern, Bindestriche oder Unterstriche enthalten kann. Die Ordner-ID finden Sie in der Ordner-URL:
https://drive.google.com/drive/folders/FOLDER_ID/edit#gid=0Weitere Informationen finden Sie unter Ordner erstellen und mit Inhalten füllen.
Die Ausgabe des Workflows sollte in etwa so aussehen, wobei der Wert id der spreadsheetId ist:
"body": {
"id": "spreadsheetId",
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.spreadsheet",
"name": "Untitled spreadsheet"
}
Öffentliches BigQuery-Dataset untersuchen
BigQuery hostet eine Reihe von öffentlichen Datasets, die für die Allgemeinheit zur Abfrage verfügbar sind.
In BigQuery können Sie einen interaktiven (On-Demand) Abfragejob ausführen. Die folgende Abfrage gibt beispielsweise die 100 beliebtesten Namen in einem bestimmten Dataset zurück und schreibt die Ausgabe in eine temporäre Tabelle. Dies ist die Abfrage, die in Ihrem Workflow ausgeführt wird.
Console
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie die folgende BigQuery-SQL-Abfrage in den Textbereich des Abfrageeditors ein:
SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 100Klicken Sie auf Ausführen.
bq
Geben Sie im Terminal den folgenden bq query-Befehl ein, um mit der Standard-SQL-Syntax eine interaktive Abfrage auszuführen:
bq query \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 100'
Workflow bereitstellen, der Daten in Google Sheets schreibt
Stellen Sie einen Workflow bereit, der ein BigQuery-Dataset mit dem BigQuery API-Connector abfragt und die Ergebnisse mit dem Google Sheets API-Connector in eine Google-Tabelle schreibt.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf Erstellen.
Geben Sie einen Namen für den neuen Workflow ein:
read-bigquery-write-sheets.Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
Wählen Sie für das Dienstkonto das Compute Engine-Standarddienstkonto (
PROJECT_NUMBER-compute@developer.gserviceaccount.com) aus.Klicken Sie auf Weiter.
Geben Sie im Workflow-Editor die folgende Definition für Ihren Workflow ein:
Ersetzen Sie den Platzhalterwert
sheetIddurch IhrespreadsheetId.Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch read-bigquery-write-sheets.yamlKopieren Sie den folgenden Workflow in einem Texteditor in Ihre Quellcodedatei:
Ersetzen Sie den Platzhalterwert
sheetIddurch IhrespreadsheetId.Stellen Sie den Workflow bereit. Geben Sie hierzu den folgenden Befehl ein:
gcloud workflows deploy read-bigquery-write-sheets \ --source=read-bigquery-write-sheets.yaml \ --location=us-central1 \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ersetzen Sie
PROJECT_NUMBERdurch die Google CloudProjektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console.
Workflow ausführen und Ergebnisse überprüfen
Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist.
Führen Sie den Workflow aus:
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Wählen Sie auf der Seite Workflows den Workflow read-bigquery-write-sheets aus, um die zugehörige Detailseite aufzurufen.
Klicken Sie auf der Seite Workflowdetails auf play_arrow Ausführen.
Klicken Sie noch einmal auf Ausführen.
Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.
Die Ausgabe sollte in etwa so aussehen:
{ "spreadsheetId": "1pgkNY7mWICA6o6INUNLHGnmk0Tdioh0nUghZPOYPpZA", "updatedCells": 303, "updatedColumns": 3, "updatedRange": "Sheet1!A1:C101", "updatedRows": 101 }
gcloud
Öffnen Sie ein Terminalfenster.
Führen Sie den Workflow aus:
gcloud workflows run read-bigquery-write-sheets
Die Ausführungsergebnisse sollten in etwa so aussehen:
Waiting for execution [4dcf737b-69d9-4081-b8d9-86d39ae86bd1] to complete...done. argument: 'null' duration: 3.131912897s endTime: '2023-01-25T14:59:46.818828242Z' name: projects/918619793306/locations/us-central1/workflows/read-bigquery-write-sheets/executions/4dcf737b-69d9-4081-b8d9-86d39ae86bd1 result: '{"spreadsheetId":"1pgkNY7mWICA6o6INUNLHGnmk0Tdioh0nUghZPOYPpZA","updatedCells":303,"updatedColumns":3,"updatedRange":"Sheet1!A1:C101","updatedRows":101}' startTime: '2023-01-25T14:59:43.686915345Z' state: SUCCEEDED
Prüfen Sie, ob die Ergebnisse der Abfrage in die Tabelle geschrieben wurden. Die Anzahl der Spalten und Zeilen in der Tabelle sollte beispielsweise mit den Werten
updatedColumnsundupdatedRowsübereinstimmen.
Nächste Schritte
- Workflow über Google Sheets auslösen
- Workflows mit Callbacks und Google Sheets pausieren und fortsetzen.
- Google Workspace-Schulungscenter aufrufen