Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // function runQueryFromCell
- function runQueryFromCell() {
- var sheet = ss.getSheetByName("Parameters");
- var range = sheet.getRange("B1"); // B1
- var query = range.getValues()[0][0];
- Logger.log("Query value: " + query);
- var queryResults;
- // Inserts a Query Job with an optional timeoutMs parameter.
- try {
- queryResults = BigQuery.Jobs.query(projectNumber, query, {'timeoutMs':10000});
- }
- catch (err) {
- Logger.log(err);
- Browser.msgBox(err);
- return;
- }
- // If the query results are not complete when the optional timeout is reached,
- // periodically poll the BigQuery API for the results manually using the query job id.
- while (queryResults.getJobComplete() == false) {
- try {
- queryResults = BigQuery.Jobs.getQueryResults(projectNumber, queryResults.getJobReference().getJobId());
- // If the Job is still not complete, sleep script for
- // 3 seconds before checking result status again
- if (queryResults.getJobComplete() == false) {
- Utilities.sleep(3000);
- }
- }
- catch (err) {
- Logger.log(err);
- Browser.msgBox(err);
- return;
- }
- }
- // Update the amount of results
- var resultCount = queryResults.getTotalRows();
- var resultSchema = queryResults.getSchema();
- var resultValues = new Array(resultCount);
- var tableRows = queryResults.getRows();
- // Iterate through query results
- for (var i = 0; i < tableRows.length; i++) {
- var cols = tableRows[i].getF();
- resultValues[i] = new Array(cols.length);
- // For each column, add values to the result array
- for (var j = 0; j < cols.length; j++) {
- resultValues[i][j] = cols[j].getV();
- }
- }
- // Update the Spreadsheet with data from the resultValues array
- sheet.getRange(3, 1, resultCount, tableRows[0].getF().length).setValues(resultValues); //put results in row 3
- }
Advertisement
Add Comment
Please, Sign In to add comment