GASでスプレッドシート → BigQuery 自動連携!
/ 初心者向け
スプレッドシートのデータをBigQueryに自動転送!GASで叶えるデータ連携
こんにちは!GAS専門ブロガーの〇〇です。
「スプレッドシートに蓄積したデータを、より高度な分析ができるBigQueryに自動で連携させたい…」
そう思っていませんか?
今回ご紹介するのは、Google Apps Script (GAS) を使って、この面倒な手作業を自動化するテクニックです。GASを使えば、プログラミングの知識が少なくても、スプレッドシートとBigQueryを繋げることができます。初心者の方でも安心して取り組めるよう、丁寧に解説していきますので、ぜひ最後までお付き合いください!
なぜスプレッドシートとBigQueryを連携させるのか?
スプレッドシートは手軽にデータを管理・分析できる素晴らしいツールですが、データ量が増えたり、複雑な分析を行いたい場合には限界があります。
一方、BigQueryはGoogle Cloudが提供する、高速かつスケーラブルなデータウェアハウスです。大量のデータを高速に処理し、高度なSQLクエリを実行できます。
この二つを連携させることで、以下のようなメリットが得られます。
- データ分析の深化: スプレッドシートのデータをBigQueryに取り込むことで、より複雑で大規模なデータ分析が可能になります。
- 自動化による効率化: 手動でのデータ転送作業が不要になり、時間と労力を節約できます。
- リアルタイムに近いデータ活用: 定期的な自動連携により、常に最新のデータを分析に活用できます。
BigQueryへのデータ転送の基本的な流れ
GASでスプレッドシートのデータをBigQueryに転送する基本的な流れは以下のようになります。
1. BigQueryデータセットとテーブルの準備: BigQueryでデータを格納するための「データセット」と、その中にデータを格納するための「テーブル」を作成します。
2. GASスクリプトの作成: スプレッドシートのデータを取得し、BigQueryに挿入するGASコードを記述します。
3. トリガーの設定: 指定した時間にGASスクリプトが自動実行されるように「トリガー」を設定します。
ステップ1:BigQueryデータセットとテーブルの準備
まず、BigQuery側でデータを格納する場所を準備しましょう。
1. Google Cloud Consoleにアクセス: Google Cloud Console にアクセスし、プロジェクトを選択します。
2. BigQueryを開く: ナビゲーションメニューから「BigQuery」を選択します。
3. データセットの作成: 左側のペインでプロジェクト名をクリックし、「データセットを作成」を選択します。データセットID(例: my_dataset)を入力し、ロケーションなどを設定して作成します。
4. テーブルの作成: 作成したデータセットを選択し、「テーブルを作成」をクリックします。ソースとして「空のテーブルを作成」を選択し、スキーマ(各列の名前とデータ型)を定義します。スプレッドシートの列構成に合わせて設定してください。
ステップ2:GASスクリプトの作成
次に、スプレッドシートのデータを取得してBigQueryに挿入するGASコードを作成します。
準備するもの
- スプレッドシート: 転送したいデータが含まれるスプレッドシート。
- BigQueryのプロジェクトID、データセットID、テーブルID: ステップ1で確認したもの。
GASコード例
function transferSpreadsheetToBigQuery() {
// BigQueryの情報を設定
const projectId = 'YOUR_PROJECT_ID'; // ご自身のプロジェクトIDに置き換えてください
const datasetId = 'my_dataset'; // 作成したデータセットIDに置き換えてください
const tableId = 'your_table_id'; // 作成したテーブルIDに置き換えてください
// スプレッドシートの情報を設定
const spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); // 現在開いているスプレッドシート
const sheetName = 'Sheet1'; // データを取得したいシート名
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
// ヘッダー行を除いたデータを取得
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
if (values.length === 0) {
Logger.log('スプレッドシートにデータがありません。');
return;
}
// ヘッダー行を削除(BigQueryのスキーマに合わせるため)
const header = values.shift();
// BigQueryに挿入するデータ形式に整形
// BigQueryのスキーマと値の順番が一致している必要があります
const rowsToInsert = values.map(row => {
// ここで必要に応じてデータ型の変換や整形を行います
// 例: 日付文字列をBigQueryのDATE型として認識させるための処理など
return row;
});
// BigQueryにデータを挿入
// BigQuery API を直接叩く方法もありますが、ここでは BigQuery Service を利用します
// 事前に Apps Script のプロジェクトで BigQuery Service を有効にする必要があります
// [リソース] > [ライブラリ] で 'BigQuery' と検索し、最新版を追加してください
const bqService = BigQuery.newBigQueryService();
const resource = {
rows: rowsToInsert.map(row => ({ values: row }))
};
try {
const response = bqService.tabledata().insertAll(
projectId,
datasetId,
tableId,
resource
);
if (response.insertErrors) {
Logger.log('エラーが発生しました: %s', JSON.stringify(response.insertErrors));
} else {
Logger.log('データ転送が完了しました。挿入された行数: %s', rowsToInsert.length);
}
} catch (e) {
Logger.log('BigQueryへの挿入中にエラーが発生しました: %s', e.toString());
}
}
スクリプトの実行とライブラリの追加:
1. スプレッドシートを開き、「拡張機能」 > 「Apps Script」を選択します。
2. 上記のコードをエディタに貼り付けます。
3. YOUR_PROJECT_ID をご自身のGoogle CloudプロジェクトIDに書き換えます。
4. datasetId と tableId も、ステップ1で作成したIDに書き換えます。
5. 重要:GASプロジェクトでBigQuery Serviceを利用できるように、ライブラリを追加します。「リソース」>「ライブラリ」を開き、「BigQuery」と入力して検索し、最新版(通常は ID Y_Y2_hT-fK4RzJ704_02p24d9r-23-0 のようなもの)を追加してください。
6. transferSpreadsheetToBigQuery 関数を選択し、実行ボタン(▶︎)をクリックします。
7. 初回実行時には、スクリプトの権限を承認する必要があります。指示に従って承認してください。
ステップ3:トリガーの設定(自動化)
GASスクリプトを定期的に自動実行させるには「トリガー」を設定します。
1. Apps Scriptエディタの左側にある時計アイコン(トリガー)をクリックします。
2. 右下にある「トリガーを追加」ボタンをクリックします。
3. 以下の設定を行います:
- 実行する関数を選択:
transferSpreadsheetToBigQueryを選択します。 - 実行するデプロイを選択:
Headを選択します。 - イベントのソースを選択: 「時間駆動」を選択します。
- 時間間隔のタイプを選択: 「日付ベースのタイマー」や「時間間隔タイマー」などを選択し、実行したい頻度(例: 毎日午前9時)を設定します。
4. 「保存」をクリックします。
これで、指定した時間にGASスクリプトが自動実行され、スプレッドシートのデータがBigQueryに転送されるようになります!
まとめ
今回は、Google Apps Script (GAS) を利用して、スプレッドシートのデータをBigQueryに自動転送する方法を解説しました。BigQueryの準備からGASコードの記述、そしてトリガーによる自動化まで、一連の流れを掴んでいただけたかと思います。
この自動連携を活用することで、データ活用の幅が大きく広がり、日々の業務効率も向上すること間違いなしです。ぜひ、ご自身のプロジェクトで試してみてください!
次回もお楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。