スプレッドシートからBigQueryへデータを自動更新する方法

こんにちは、GMOアドマーケティングのS.Rです。

スプレッドシートはGoogle が提供する表計算ツールです。スプレッドシートでは簡単にデータを分析し、共同作業などが凄く楽になります。
BigQueryはデータの分析業務によく使われているGoogle Cloud Service の重要なサービスです。日々の業務中は手動で スプレッドシート のシートを BigQuery のテーブルへuploadすることがよくあります。今回はスプレッドシートからシートの内容に変動がある場合に自動的にBigQueryへuploadするAppscriptのバッチの作成方法を紹介します。

App scriptとは

詳細については【 GoogleのApps Scriptのホームページ (リンク:https://workspace.google.co.jp/intl/ja/products/apps-script/】をご覧ください。

流れ

下記はバッチの流れ図です。ユーザーがスプレッドシートのシートに何か変更を行うとバッチは自動的に呼ばれてシート
の内容をcsvファイルでGoogle Driveに保存します
。その後このcsvファイルをBigQueryのテーブルへuploadします。

さあ早速Appscriptのバッチを作成しましょう。

スプレッドシートを作成

まずテスト用のシートを作ります。今回は例として下記のデータを入れました。  

App Scriptのプログラムを作成

拡張機能->App Scriptを選んてください。   新しく作成されたApp Scriptの様子は下記です。  

App Scriptのサービス設定

左側の”サービス”を押してください。 BigQuery ApiとDriveを追加しましょう。

Google Driveで新しいフォルダを作成

csv ファイルを保存するための新しいフォルダを作成してください。作成できたらmouseの右ボタンをクリックして リンクを取得 を押しましょう。 取得できたリンクのID(https://drive.google.com/drive/folders/後の部分)をメモしてください。  

バッチのコードを書く

シートの内容をDrive のcsvファイルへ書く関数を作成 csvファイルをBigQueryのテーブルへuploadする関数を作成 最後スプレッドシートからBigQueryのテーブルへuploadする関数を作成します。SPREADSHEET_URL、projectId、datasetIdを各自で設定してください 一回実行してみましょう。 権限を承認します。 実行は完了まで少々待ってください。 実行できるとBigQueryの管理画面に新しくuploadされたテーブルが確認できます。

トリガー関数を追加

実行関数にspreadsheet2Bigqueryを選択しイベントのオプションを選んでください。

バッチを試す

スプレッドシートに新しい一行を追加しましょう。 BigQueryのテーブルに新しいデータを自動的に追加できました!

まとめ

今回はスプレッドシートのシートをBigQueryへ自動更新するバッチの作成方法を紹介いたしました。いかがでしょうか。もし皆さんの日々の分析業務にお役に立つと幸いです。