【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);
}