我有一个 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);
显然,电子表格键、工作表的名称和范围只是这里的一个例子。
关于google-apps-script - 触发函数和 IMPORTRANGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855960/