tkmngn
5/22/2019 - 9:16 AM

GAS

/* Ref.
 * https://developers.google.com/apps-script/advanced/bigquery
 * https://ex-ture.com/blog/2018/06/24/google-apps-script-to-update-bigquery/
 * https://blog.pnkts.net/2018/04/27/spreadsheet-gas-csv/
 */

function loadCsv() {
  var projectId = 'curious-ivy-826';
  var datasetId = 'prod_pfm_kpi';

  var tableId = 'mau2';
  var table = {
    tableReference: {
      projectId: projectId,
      datasetId: datasetId,
      tableId: tableId
    },
    schema: {
      fields: [
        {name: 'date', type: 'string'},
        {name: 'uu', type: 'integer'}
      ]
    }
  };
  try {
    BigQuery.Tables.remove(projectId, datasetId, tableId); 
  } catch (e) {}
  table = BigQuery.Tables.insert(table, projectId, datasetId);
  Logger.log('Table created: %s', table.id);

  var data = Utilities.newBlob(loadData()).setContentType('application/octet-stream');
  var job = {
    configuration: {
      load: {
        destinationTable: {
          projectId: projectId,
          datasetId: datasetId,
          tableId: tableId
        },
        skipLeadingRows: 1
      }
    }
  };
  job = BigQuery.Jobs.insert(job, projectId, data);
  Logger.log('Load job started. Check on the status of it here: ' +
      'https://bigquery.cloud.google.com/jobs/%s', projectId);
}

function loadData() {
  var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  var csv = '';
  for(var i = 0; i < data.length; i++) {
    csv += data[i].join(',') + "\r\n";
  }
  Logger.log(csv);
  return csv;
}