【GAS】BigQueryデータテーブルに対してクエリを実行する
スプレットシートにあるシートに記述したSQLを読み込む方法。
公式ドキュメントにサンプルがあるので、それを参照
Google BigQuery | Google Ads scripts | Google Developers
公式にあるサンプル。
function queryDataTable() { // Replace this value with the project ID listed in the Google // Cloud Platform project. var projectId = 'INSERT_PROJECT_ID_HERE'; var dataSetId = 'INSERT_DATASET_ID_HERE'; var tableId = 'INSERT_TABLE_ID_HERE'; var fullTableName = projectId + ':' + dataSetId + '.' + tableId; var queryRequest = BigQuery.newQueryRequest(); queryRequest.query = 'select Name, Price from [' + fullTableName + '];'; var query = BigQuery.Jobs.query(queryRequest, projectId); if (query.jobComplete) { for (var i = 0; i < query.rows.length; i++) { var row = query.rows[i]; var values = []; for (var j = 0; j < row.f.length; j++) { values.push(row.f[j].v); } Logger.log(values.join(',')); } } }
自分用にアレンジして流用するためにここに記述。
基本的用意するシート
①result 結果を出力
②query クエリを記載しておく。
function myfunction(){ const spreadsheet = spreadsheetApp.getActiveSpreadsheet(); //スプレットシート取得 const querySheet = spreadsheet.getSheetbyName("query"); //queryシートを取得 const resultSheet = spreadsheet.getSheetByName("result"); // resultシートを取得 const query = querysheet.getRange("B2").getValue(); //queryシートにあるB2に記載したSQLを取得する。 const projectId = 'xxxxxxxx'; //請求先のプロジェクトID //BigQueryデータテーブルに対してクエリを実行する //Queryパラメータ作成 var queryRequest = BigQuery.newQueryRequest(); queryRequest.query = query; //sqlがここに入る var result = BigQuery.Jobs.query(queryRequest, projectId); let rows = []; for (let i = 0; i < result.rows.length; i++) { let resultRow = result.rows[i]; let url = resultRow.f[0].v; let count = resultRow.f[1].v; let row = []; row.push(url, count); rows.push(row); } const startRow = 2, startColumn = 1, numColumns = 2; resultSheet.getRange(startRow, startColumn, rows.length, numColumns).setValues(rows); }