【发布时间】:2019-07-10 07:00:52
【问题描述】:
我有这种情况:
使用 1 将工作表“BQ”与 BigQuery 连接
第二张表“F”包含一个从“BQ”读取数据的公式
触发 BigQuery 数据重新加载的 AppsScript
这是脚本示例:
var spreadsheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
SpreadsheetApp.enableAllDataSourcesExecution();
spreadsheet.getRange("A1").getCell(1,1).getDataSourceTables()[0].refreshData();
此应用脚本执行以下操作:
- 触发 BigQuery 数据重新加载,如前所述
- “等待”查询完成
- “等待”公式处理新数据并更新第二张工作表
- 解析第二张表中的数据并做它必须做的事情......
这是查询运行的时间:
这是根据公式更新工作表的时间:
我有一个问题,我不知道如何做“等待”部分。起初我认为只有SpreadsheetApp.flush(); 就足够了,但最后脚本开始读取,即使查询仍在运行或电子表格仍在更新公式,所以这个命令对我的需要没有用。
目前我正在使用固定的Utilities.sleep(20000);,基于我看到的两个操作(查询和工作表更新)所需的时间,但我想知道是否有更高级的方法来执行在工作表完全更新之前“休眠”
【问题讨论】:
-
尝试使用waitForCompletion()?
-
这对于DataSource(操作的第一部分)听起来不错,您对基于公式的更新有什么建议吗?谢谢
标签: google-apps-script google-sheets google-bigquery