技術ブログ

GASでスプレッドシートデータをBigQueryへ自動転送!

/ 初心者向け

GASでスプレッドシートデータをBigQueryへ自動転送!

スプレッドシートのデータをBigQueryへ自動転送!GASで実現する方法

皆さん、こんにちは!GAS専門ブロガーの〇〇です。

今回は、Googleスプレッドシートに蓄積されたデータを、より高度な分析基盤であるGoogle BigQueryへ自動で連携させる方法をご紹介します。この連携を実現することで、スプレッドシートの気軽さとBigQueryの強力な分析能力を両立させることができ、データ活用の幅が格段に広がります。

「GAS?BigQuery?難しそう…」と感じている初心者の方もご安心ください。この記事では、一つ一つのステップを丁寧に解説していきますので、ぜひ最後までお読みください。

なぜスプレッドシートのデータをBigQueryへ転送するのか?

スプレッドシートは手軽にデータを入力・編集でき、多くのビジネスシーンで活用されています。しかし、データ量が増えるとパフォーマンスが低下したり、高度な集計・分析には限界があったりします。一方、BigQueryは、ペタバイト級のデータでも高速に分析できるデータウェアハウスです。

この二つを連携させることで、以下のようなメリットが得られます。

  • スケーラビリティの向上: 大量のデータもスムーズに扱えるようになります。
  • 高度な分析: SQLを使った複雑なクエリで、より深いインサイトを得られます。
  • リアルタイム性: ほぼリアルタイムでデータをBigQueryに反映させ、最新の状態で分析できます。
  • 他のGoogle Cloudサービスとの連携: Looker Studio(旧Googleデータポータル)などと連携し、ダッシュボード作成も容易になります。

###GASで実現する自動転送の仕組み

GASは、Google Workspaceの各サービスを連携させるための強力なスクリプト言語です。今回、GASを使って、スプレッドシートからデータを読み込み、BigQueryのテーブルに挿入するという処理を自動化します。

具体的には、GASからBigQuery APIを呼び出すことで、このデータ転送を実現します。スクリプトの実行は、時間駆動型トリガー(例:毎時、毎日)やイベント駆動型トリガー(例:スプレッドシートの編集時)を設定することで、自動化できます。

準備するもの

  • Googleアカウント: スプレッドシートとBigQueryを利用するために必要です。
  • Googleスプレッドシート: 転送したいデータが格納されているもの。
  • Google BigQuery: データを格納するデータセットとテーブルを作成しておく必要があります。

BigQueryの準備

BigQueryにデータセットとテーブルを作成します。テーブルのスキーマ(列名とデータ型)は、スプレッドシートの列構成と一致させる必要があります。

-- 例: 'my_dataset' というデータセットに 'my_table' というテーブルを作成
CREATE SCHEMA IF NOT EXISTS my_dataset;

CREATE TABLE IF NOT EXISTS my_dataset.my_table (
  column1 STRING,
  column2 INTEGER,
  column3 TIMESTAMP
);

GASスクリプトの作成

いよいよGASスクリプトを作成します。スプレッドシートのエディタを開き、以下のコードを参考に実装してください。

function transferSpreadsheetToBigQuery() {
  // 1. スプレッドシートとシートを指定
  var spreadsheetId = 'YOUR_SPREADSHEET_ID'; // ここにスプレッドシートのIDを入力
  var sheetName = 'Sheet1'; // ここにシート名を入力
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var sheet = ss.getSheetByName(sheetName);

  // 2. BigQueryのデータセットとテーブルを指定
  var datasetId = 'my_dataset'; // ここにBigQueryのデータセットIDを入力
  var tableId = 'my_table';     // ここにBigQueryのテーブルIDを入力

  // 3. スプレッドシートからデータを取得
  var dataRange = sheet.getDataRange();
  var values = dataRange.getValues();

  // ヘッダー行を除外する場合 (必要に応じて)
  // values.shift();

  // 4. BigQueryへデータを挿入
  // BigQuery API を利用するには、クライアントライブラリを使用するのが一般的ですが、
  // GASから直接APIを叩くことも可能です。ここでは簡易的な例を示します。
  // 実際には、より堅牢なライブラリや方法を推奨します。

  // BigQueryクライアントライブラリを有効にする手順は別途必要です。
  // その後、以下のようなコードで挿入できます。

  // var bq = BigQuery.newBigQueryClient();
  // var table = bq.getTable(datasetId, tableId);
  // var rows = [];
  // values.forEach(function(row) {
  //   rows.push({
  //     'column1': row[0],
  //     'column2': row[1],
  //     'column3': new Date(row[2]) // Dateオブジェクトに変換
  //   });
  // });
  // table.insertRows(rows);

  Logger.log('スプレッドシートからBigQueryへのデータ転送が完了しました。');
}

: 上記コードは概念を示すためのものです。実際のBigQueryへのデータ挿入には、BigQueryクライアントライブラリの有効化や、より詳細なAPI連携処理が必要になります。GASでBigQueryを操作するには、BigQuery API のドキュメントを参照し、認証やリクエストの構築方法を理解することが重要です。

トリガーの設定

スクリプトを保存したら、次に自動実行するためのトリガーを設定します。

1. GASエディタで、左側の時計アイコン(トリガー)をクリックします。

2. 右下にある「トリガーを追加」ボタンをクリックします。

3. 「実行する関数を選択」で、作成した関数名(例: transferSpreadsheetToBigQuery)を選びます。

4. 「実行するデプロイを選択」は、通常「ヘッド」で問題ありません。

5. 「イベントのソースを選択」で、「時間駆動」などを選び、実行頻度(毎時、毎日など)を設定します。

6. 「エラー通知設定」は、適宜設定してください。

7. 「保存」をクリックします。

初めてトリガーを作成する際には、GASがスプレッドシートやBigQueryにアクセスするための承認を求められますので、許可してください。

まとめ

いかがでしたでしょうか?GASを使えば、スプレッドシートのデータをBigQueryに自動で転送し、データ活用の可能性を大きく広げることができます。最初は少し難しく感じるかもしれませんが、一つずつステップを踏めば、誰でも実装可能です。

ぜひ、この記事を参考に、あなたのデータ活用を次のレベルへと引き上げてください!

次回もお楽しみに!

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る