触发函数和importrange

use*_*290 3 triggers google-sheets google-apps-script importrange

我有一个谷歌应用程序脚本,将谷歌表单中提交的信息与使用importrange函数带入谷歌电子表格的信息进行比较.如果我手动运行该脚本,但如果它从表单提交触发器运行,它会报告它没有使用importrange从单元格中获取正确的信息.有没有办法绕过这个,就像我可以添加一个快速功能强制导入范围更新?我已经尝试添加最多10分钟的等待时间,但它没有改变结果.

谢谢

Hen*_*reu 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);
Run Code Online (Sandbox Code Playgroud)

显然,电子表格密钥,工作表的名称和范围只是一个示例.

  • 只是一个提示,因为你是StackOverflow的新手,当你觉得自己有一个好的答案时,你应该把答案标记为已接受.投票(上下)也是我们在这里的另一个很好的功能.这不是邮件列表;) (2认同)