Google Drive
クエリーの結果からスプレッドシートを作成
概要
このブロックは、クエリーの結果からGoogleドライブにスプレッドシートを作成します。
スプレッドシートの作成に成功すると、スプレッドシートへのURLがログへ出力されます。スプレッドシートへは、このURLでアクセスします。
注意
このスプレッドシートへアクセスするには、権限が必要です。[Googleドライブのアイテムを共有]ブロックでスプレッドシートを共有し、適切な権限を設定してください(このブロックの拡張設定を使うと作成と同時に共有と権限の設定もできます)。
重要
セルフサービスプランの場合は、このブロックを使用する前に、Google Sheets APIを有効にしてください。共有機能(【共有相手】プロパティ)を利用する場合は、Google Drive APIも有効にしてください。詳しくは、「基本操作ガイド>ヒント>Google APIを有効にする」を参照してください。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
編集パネルに配置した当該ブロックの表示名が変更できます。 ブロックリストパネル中のブロック名は変更されません。 |
GCPサービスアカウント | このブロックで使用するGCPサービスアカウントを選択します。 |
フォルダURL |
指定したフォルダーにスプレッドシートを作成する場合、このオプションを使用して、そのフォルダーのURLを指定します。 このフォルダーでは、指定されたGCPサービスアカウントでスプレッドシートを作成できるよう、事前に適切な権限を与えておく必要があります。 [変数展開の指定が可能]
|
ファイル名 |
作成するスプレッドシートのファイル名を指定します。空欄の場合は、自動でファイル名が付けられます。 [変数展開の指定が可能]
|
クエリー |
スプレッドシートの入力となるクエリーを指定します。 クエリ接頭辞( をクリックすると、指定されたクエリーをクリップボードへコピーします。コピーの際、フロー間共通変数は、設定値に置き換わります。フロー間共通変数を置き換えたくない場合は、ウェブブラウザーのコピー機能を利用してください(例:コピーしたい部分を範囲選択して、マウスの右ボタンクリックで表示されるメニューから「コピー」をクリック)。 |
クエリー内の%形式の文字列書式を有効にする |
クエリー内の%形式の文字列書式を有効にするかしないかを指定します。
ヒント |
作成したファイルURLを格納する変数 |
作成したスプレッドシートへのURLが変数に格納できます。 作成したスプレッドシートへのURLを変数に格納したい場合は、このプロパティに変数を指定します。 |
ブロックメモ | このブロックに関するメモが記載できます。このブロックの処理に影響しません。 |
ワークシート名 |
作成するスプレッドシートのシート名を指定します。空欄の場合は、自動でシート名が付けられます。 |
開始セル(A1形式) |
データを書き出すセルの位置をA1形式で指定します。空欄の場合は、セルA1が指定されたと見なします。
|
ヘッダー行を出力する |
ヘッダー行を出力するかしないかを指定します。
|
出力するキー |
[ キーは、[ |
共有相手 |
共有する相手を選択します。
|
付与する権限 |
共有する相手に付与する権限を選択します。
|
Eメールアドレス |
共有相手として[特定のユーザー]・[グループ]を選択した場合に、メールアドレスを指定します。 メールアドレスは、カンマ(
|
ドメイン |
共有相手として[ドメイン]を選択した場合に、共有相手のGoogle Workspaceドメインを指定します。 |
ファイル検索で検出を許可する |
共有する相手として[ドメイン]・[ウェブ上で一般公開]を選択した場合に、ファイル検索でアイテムの検出を許可するかしないかを指定します。
|
クエリー文をログへ出力 |
クエリー文をログへ出力するかどうかの指定です。 ログに出力するクエリー文は、変数が展開されて出力されます。クエリー文をログへ出力する場合は、チェックボックスにチェックを入れてください。 |
使用例
BigQuery上の毎日の商品別売上データを集計し、その結果をスプレッドシートに出力し、Slackで社内の関係者に通知するフローを作成する例を紹介します。
前提条件
以下のようなBigQueryテーブルがあらかじめ用意されているとします。
- 注文明細テーブル(order_items)
スキーマ定義: カラム名 型 モード order_id STRING NULLABLE order_date DATE NULLABLE product_id STRING NULLABLE quantity INTEGER NULLABLE price FLOAT NULLABLE サンプルデータ: order_id order_date product_id quantity price 1001 2024-03-10 A001 2 1000 1001 2024-03-10 B002 1 2000 1002 2024-03-10 C003 3 1500 1002 2024-03-10 A001 2 1000 - 商品マスタテーブル(products)
スキーマ定義: カラム名 型 モード product_id STRING NULLABLE product_name STRING NULLABLE category STRING NULLABLE サンプルデータ: product_id product_name category A001 商品A カテゴリX B002 商品B カテゴリY C003 商品C カテゴリZ
また、以下の準備も必要です。
- SlackワークスペースのIncoming Webhookの設定
- Incoming WebhookのURLを取得しておく
- レポート共有用のSlackチャンネルを決めておく
- Googleドライブの共有フォルダーの設定
- レポート出力用の共有フォルダーを作成しておく
- 共有フォルダーのURLを取得しておく
- レポートを共有するグループのメールアドレスを取得しておく
フロー
- 「フローの開始」ブロックを配置
プロパティ名 値 開始時間 0 0 */1 * *
(毎日深夜0時)開始時間を有効にする - 「クエリーの実行」ブロックを配置
プロパティ名 値 クエリー SELECT FORMAT_DATE('%Y-%m-%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)) AS target_date
結果を格納する変数 target_date
ヒント
target_date
には、[{"target_date": "2024-03-09"}]
のようにオブジェクトの配列形式でデータが格納されています。 - 「クエリーの結果からスプレッドシートを作成」ブロックを配置
プロパティ名 値 フォルダURL https://drive.google.com/drive/folders/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?usp=drive_link
ファイル名 ${target_date.0.target_date}の商品別売上レポート
クエリー SELECT p.category AS `カテゴリ`, p.product_name AS `商品名`, SUM(oi.quantity) AS `販売数量`, SUM(oi.price * oi.quantity) AS `売上金額` FROM example.order_items oi JOIN example.products p ON oi.product_id = p.product_id WHERE oi.order_date = DATE('${target_date.0.target_date}') GROUP BY p.category, p.product_name ORDER BY `カテゴリ`, `商品名`
作成したファイルURLを格納する変数 sheet_url
ヘッダー行を出力する 共有相手 グループ
付与する権限 閲覧
Eメールアドレス xxxxx@example.jp
ヒントtarget_date.0.target_date
は、target_date
変数に格納された配列の最初の要素のtarget_date
キーの値を参照します。target_date
変数には、[{"target_date": "2024-03-09"}]
のようなオブジェクトの配列形式でデータが格納されています。この変数の
"2024-03-09"
を参照するには、target_date.0.target_date
のように記述します。target_date
は変数名.0
は配列の最初(0番目)の要素を表す.target_date
は、その要素のtarget_date
キーを表す
詳しくは、「配列とオブジェクト」を参照願います。
- 「Slack通知」ブロックを配置
プロパティ名 値 Webhook URL https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyy
通知メッセージ ${target_date.0.target_date}の商品別売上レポートが完成しました。スプレッドシートのURLはこちら: ${sheet_url}
このフローが毎日深夜に実行されると、以下のような処理が行われます。
- 「クエリーの実行」ブロックで、前日の日付をYYYY-MM-DD形式で取得し、
target_date
変数に格納 - 「クエリーの結果からスプレッドシートを作成」ブロックで、
target_date
変数を使って前日の売上データを集計し、指定のフォルダにスプレッドシートを作成 - 作成したスプレッドシートを、指定のグループに閲覧権限で共有
- 「Slack通知」ブロックで、
target_date
変数を使ってレポート完成通知を指定のSlackチャンネルに送信
ポイント
- 「クエリーの実行」ブロックを活用し、フロー内で動的に日付を取得
- クエリ結果の変数への格納方法と、その変数の参照方法
- 「クエリーの結果からスプレッドシートを作成」ブロックによる、データ集計とレポート作成の自動化
- 作成したスプレッドシートの共有設定による、関係者への自動共有
- 「Slack通知」ブロックを使った、レポート完成のリアルタイム通知
このように、フローデザイナーを使えば、データ集計からレポート生成、関係者への通知までを一つのフローで自動化できます。