Google スプレッドシートは、リアルタイムでの共同編集が可能な、データの可視化、処理、通信のためのツールを提供するクラウドベースのスプレッドシート ソリューションです。
次の例は、ワークフローからスプレッドシートに書き込む方法を示しています。このワークフローは、BigQuery データセットに対してクエリを実行し、結果を Google スプレッドシートに書き込みます。Workflows コネクタを使用して、Google Cloud APIs の呼び出しを簡素化します。
始める前に
このドキュメントの例を試す前に、次のことが完了していることを確認してください。
Compute Engine、Google ドライブ、Google スプレッドシート、Workflows API を有効にします。
コンソール
gcloud
gcloud services enable \ compute.googleapis.com \ drive.googleapis.com \ sheets.googleapis.com \ workflows.googleapis.com
テスト用にサンプル ワークフローに関連付けるため、Compute Engine のデフォルトのサービス アカウントのサービス アカウントをメモします。Compute Engine API が有効になっている新しいプロジェクトには、IAM 基本編集者ロールや、以下のメール形式を持つサービス アカウントが作成されます。
PROJECT_NUMBER-compute@developer.gserviceaccount.com
プロジェクト番号は、Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドでプロジェクト番号を取得することもできます。
gcloud projects describe PROJECT_ID
本番環境では、新しいサービス アカウントを作成して、必要最小限のアクセス許可を含む、最小権限の原則に従った 1 つ以上の IAM ロールを付与することを強くおすすめします。
Google ドライブに新しいフォルダを作成します。このフォルダはスプレッドシートの保存に使用されます。共有フォルダの権限を設定することで、ワークフローによるスプレッドシートへの書き込みができるようになります。
- drive.google.com にアクセスする。
- [新規] > [新しいフォルダ] をクリックします。
- フォルダ名を入力します。
- [作成] をクリックします。
- 新しいフォルダを右クリックし、[共有] を選択します。
Compute Engine のデフォルト サービス アカウントのメールアドレスを追加します。
これにより、サービス アカウントにフォルダへのアクセスが許可されます。サービス アカウントをワークフローに関連付けると、そのワークフローにはフォルダ内の任意のファイルに対する編集権限が付与されます。ファイル、フォルダ、ドライブの共有の詳細。
編集者のロールを選択します。
[通知] チェックボックスをオフにします。
[共有] をクリックします。
スプレッドシートを作成する
スプレッドシートは、次のいずれかの方法で作成できます。
Google Sheets API を使用して、指定したフォルダ内に直接スプレッドシートを作成するオプションはありません。ただし、次の例に示すように、スプレッドシートを作成した後に、特定のフォルダに移動するなど、別の方法もあります。詳細については、Google ドライブ フォルダを操作するをご覧ください。
Google スプレッドシートを使用してスプレッドシートを作成する
Google スプレッドシートを使用して作成したスプレッドシートは、Google ドライブに保存されます。デフォルトでは、スプレッドシートはドライブのルートフォルダに保存されます。
sheets.google.com にアクセスします。
[新規] をクリックします。
新しいスプレッドシートが作成され、開きます。各スプレッドシートには一意の
spreadsheetId
値があり、これには文字、数字、ハイフン、アンダースコアが含まれます。スプレッドシート ID は Google スプレッドシートの URL で確認できます。https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0
この ID はワークフローの作成時に必要になるため、メモしておいてください。
前に作成した Google ドライブ フォルダにスプレッドシートを移動します。
- スプレッドシートで、[ファイル] > [移動] を選択します。
- 作成したフォルダに移動します。
- [移動] をクリックします。
Google Sheets API コネクタを使用してスプレッドシートを作成する
Google Sheets API コネクタを使用してスプレッドシートを作成できます。Workflows はサービス アカウントをトリガー ID として使用するため、サービス アカウントの Google ドライブのルートフォルダにスプレッドシートが作成されます。その後、スプレッドシートを別のフォルダに移動できます。
次のワークフローでは、resp
の結果から spreadsheetId
を取得します。
YAML
JSON
FOLDER_ID
は、スプレッドシートの移動先のフォルダの ID に置き換えます。ドライブのフォルダごとに、文字、数字、ハイフン、アンダースコアから成る一意の ID が割り当てられます。フォルダ ID は、フォルダの URL で確認できます。
https://drive.google.com/drive/folders/FOLDER_ID/edit#gid=0
詳しくは、フォルダを作成しデータを入力するをご覧ください。
ワークフローからの出力は次のようになります。ここで、id
の値は spreadsheetId
です。
"body": { "id": "spreadsheetId", "kind": "drive#file", "mimeType": "application/vnd.google-apps.spreadsheet", "name": "Untitled spreadsheet" }
BigQuery の一般公開データセットを探索する
BigQuery は、クエリ対象として一般公開できるいくつかの一般公開データセットをホストしています。
BigQuery では、インタラクティブ(オンデマンド)クエリジョブを実行できます。たとえば、次のクエリは特定のデータセットで最も人気のある 100 個の名前を返し、出力を一時テーブルに書き込みます。これは、ワークフローで実行されるクエリです。
Console
Google Cloud コンソールで BigQuery ページに移動します。
[クエリエディタ] のテキスト領域に、次の BigQuery SQL クエリを入力します。
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
[実行] をクリックします。
bq
ターミナルで、次の bq query
コマンドを入力し、標準 SQL 構文を使用してインタラクティブ クエリを実行します。
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'
スプレッドシートへの書き込みを行うワークフローをデプロイする
BigQuery API コネクタを使用して、BigQuery データセットに対してクエリを実行し、Google Sheets API コネクタを使用して結果をシート スプレッドシートに書き込むワークフローをデプロイする
Console
Google Cloud コンソールの [ワークフロー] ページに移動します。
[
作成] をクリックします。新しいフィールドの名前を入力します:
read-bigquery-write-sheets
。[リージョン] リストで [us-central1 (Iowa)] を選択します。
[サービス アカウント] で、Compute Engine のデフォルトのサービス アカウント(
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)を選択します。[次へ] をクリックします。
ワークフロー エディタで、次のワークフローの定義を入力します。
プレースホルダ
sheetId
値をspreadsheetId
に置き換えます。[デプロイ] をクリックします。
gcloud
ワークフローのソースコード ファイルを作成します。
touch read-bigquery-write-sheets.yaml
テキスト エディタで、次のワークフローをソースコード ファイルにコピーします。
プレースホルダ
sheetId
値をspreadsheetId
に置き換えます。次のコマンドを入力してワークフローをデプロイします。
gcloud workflows deploy read-bigquery-write-sheets \ --source=read-bigquery-write-sheets.yaml \ --location=us-central1 \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_NUMBER
は、実際の Google Cloud プロジェクトの番号に置き換えます。プロジェクト番号は、Google Cloud コンソールの [ようこそ] ページで確認できます。
ワークフローを実行して結果を確認する
ワークフローを実行すると、そのワークフローに関連付けられた現在のワークフロー定義が実行されます。
ワークフローを実行する
Console
Google Cloud コンソールの [ワークフロー] ページに移動します。
[ワークフロー] ページで [read-bigquery-write-sheets] ワークフローを選択して詳細ページに移動します。
[ワークフローの詳細] ページで [play_arrow 実行] を選択します。
もう一度 [Execute] をクリックします。
ワークフローの結果が [出力] ペインに表示されます。
出力例を以下に示します。
{ "spreadsheetId": "1pgkNY7mWICA6o6INUNLHGnmk0Tdioh0nUghZPOYPpZA", "updatedCells": 303, "updatedColumns": 3, "updatedRange": "Sheet1!A1:C101", "updatedRows": 101 }
gcloud
ターミナルを開きます。
ワークフローを実行します。
gcloud workflows run read-bigquery-write-sheets
結果の例を以下に示します。
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
ワークフローによってクエリの結果がスプレッドシートに書き込まれていることを確認します。たとえば、スプレッドシート内の列と行数は、
updatedColumns
とupdatedRows
の値と一致している必要があります。
次のステップ
- Google スプレッドシートからワークフローをトリガーする。
- コールバックと Google スプレッドシートを使用してワークフローを一時停止、再開する。
- Google Workspace ラーニング センターを探索する。