我有一个 Google Apps 脚本,它将 Google 表单中提交的信息与使用 IMPORTRANGE 函数带入 Google 电子表格的信息进行比较。如果我手动运行该脚本,但如果它从表单提交触发器运行,它会报告它没有从使用 IMPORTRANGE 的单元格中获取正确的信息。
有没有办法解决这个问题,比如我可以添加一个快速功能来强制更新导入范围吗?
我已经尝试添加长达 10 分钟的等待时间,但并没有改变结果。
我有一个 Google Apps 脚本,它将 Google 表单中提交的信息与使用 IMPORTRANGE 函数带入 Google 电子表格的信息进行比较。如果我手动运行该脚本,但如果它从表单提交触发器运行,它会报告它没有从使用 IMPORTRANGE 的单元格中获取正确的信息。
有没有办法解决这个问题,比如我可以添加一个快速功能来强制更新导入范围吗?
我已经尝试添加长达 10 分钟的等待时间,但并没有改变结果。
问题在于函数是如何importRange
工作的。实际上,它们需要与使用它们登录的用户帐户相同的访问/权限,以避免安全漏洞(想象您拥有的电子表格的编辑器访问您未与他们共享的其他电子表格)。
正因为如此(好吧,至少我是这么认为的),这些公式只有在您打开电子表格时才会被评估。当您关闭它并让脚本在触发器上运行时,它不会在预期的单元格上找到任何结果。
一个简单的解决方法是使用脚本本身获取数据并使用importRange
. 这很容易做到,例如
var values = SpreadsheetApp.openById('external-spreadsheet-key').
getSheetByName('Sheet1').getRange('A1:D100').getValues();
SpreadsheetApp.getActive().getSheetByName('DestSheet').
getRange(1,1,values.length,values[0].length).setValues(values);
显然,电子表格键、工作表的名称和范围只是这里的一个示例。