触发函数和IMPORTRANGE

4
我有一个Google Apps Script,它会将在Google表单中提交的信息与使用IMPORTRANGE函数带入到Google电子表格中的信息进行比较。如果我手动运行脚本,它可以完美地工作,但如果从表单提交触发器运行,它会报告它没有从使用IMPORTRANGE的单元格中获取正确的信息。
是否有一种解决方法,比如我可以添加一个快速函数来强制更新导入范围?
我已经尝试添加了长达10分钟的等待时间,但结果并没有改变。
1个回答

14
问题出在像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);

显然,这里提供的电子表格密钥、工作表名称和范围仅为示例。


2
只是一个小建议,既然你是 StackOverflow 的新手,当你觉得某个答案不错时,应该将其标记为已接受的答案。投票(赞和踩)也是我们这里的另一个不错的功能。这不是邮件列表 ;) - Henrique G. Abreu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接