Checkmark

BigQuery Tutorial Code Snip 5

Jul 9th, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. // function runQueryFromCell
  2.  
  3. function runQueryFromCell() {
  4. var sheet = ss.getSheetByName("Parameters");
  5. var range = sheet.getRange("B1"); // B1
  6. var query = range.getValues()[0][0];
  7.  
  8. Logger.log("Query value: " + query);
  9.  
  10. var queryResults;
  11. // Inserts a Query Job with an optional timeoutMs parameter.
  12. try {
  13. queryResults = BigQuery.Jobs.query(projectNumber, query, {'timeoutMs':10000});
  14. }
  15. catch (err) {
  16. Logger.log(err);
  17. Browser.msgBox(err);
  18. return;
  19. }
  20. // If the query results are not complete when the optional timeout is reached,
  21. // periodically poll the BigQuery API for the results manually using the query job id.
  22. while (queryResults.getJobComplete() == false) {
  23. try {
  24. queryResults = BigQuery.Jobs.getQueryResults(projectNumber, queryResults.getJobReference().getJobId());
  25. // If the Job is still not complete, sleep script for
  26. // 3 seconds before checking result status again
  27. if (queryResults.getJobComplete() == false) {
  28. Utilities.sleep(3000);
  29. }
  30. }
  31. catch (err) {
  32. Logger.log(err);
  33. Browser.msgBox(err);
  34. return;
  35. }
  36. }
  37.  
  38. // Update the amount of results
  39. var resultCount = queryResults.getTotalRows();
  40. var resultSchema = queryResults.getSchema();
  41.  
  42. var resultValues = new Array(resultCount);
  43. var tableRows = queryResults.getRows();
  44.  
  45. // Iterate through query results
  46. for (var i = 0; i < tableRows.length; i++) {
  47. var cols = tableRows[i].getF();
  48. resultValues[i] = new Array(cols.length);
  49. // For each column, add values to the result array
  50. for (var j = 0; j < cols.length; j++) {
  51. resultValues[i][j] = cols[j].getV();
  52. }
  53. }
  54.  
  55. // Update the Spreadsheet with data from the resultValues array
  56. sheet.getRange(3, 1, resultCount, tableRows[0].getF().length).setValues(resultValues); //put results in row 3
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment