- Google Apps Script( GAS ) から BigQuery を操作するにはどうすればいいのか知りたい
- GAS で BigQuery のテーブル定義書をスプレッドシートに出力したい
- GAS をスケジュール実行して、定期的にテーブル定義書を更新したい
Step1:BigQuery テーブルデータをスプレッドシートに出力
とりあえず、Google Apps Script を動かして、BigQuery のテーブルデータをスプレッドシートに出力してみたいと思います。
新しいスプレッドシートを開いたら、「ツール」タブから「スクリプトエディタ」をクリックします。
Apps Script 画面が開くので、「サービス」から「BigQuery API」を追加します。
エディタに以下のスクリプトを入力しました。
GASからBigQueryに対してクエリを実行する
GASからBigQueryに対してクエリを実行するサンプルコードは以下になります
function runQuery() { // Replace this value with the project ID listed in the Google // Cloud Platform project. var projectId = '<プロジェクトID>'; var request = { query: "SELECT * FROM <テーブル名> limit 10;", useLegacySql: false }; var queryResults = BigQuery.Jobs.query(request, projectId); var jobId = queryResults.jobReference.jobId; // Check on status of the Query Job. var sleepTimeMs = 500; while (!queryResults.jobComplete) { Utilities.sleep(sleepTimeMs); sleepTimeMs *= 2; queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId); } // Get all the rows of results. var rows = queryResults.rows; while (queryResults.pageToken) { queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, { pageToken: queryResults.pageToken }); rows = rows.concat(queryResults.rows); } if (rows) { var spreadsheet = SpreadsheetApp.create('BiqQuery Table Data'); var sheet = spreadsheet.getActiveSheet(); sheet.setName('pos_partition_date'); // Append the headers. var headers = queryResults.schema.fields.map(function(field) { return field.name; }); sheet.appendRow(headers); // Append the results. var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } sheet.getRange(2, 1, rows.length, headers.length).setValues(data); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); } else { Logger.log('No rows returned.'); } }
あとはこの関数なりをスケジューラーで定期実行すると読み書きの定期実行処理が可能になります。
コメント