【问题标题】:Triggered functions and IMPORTRANGE触发函数和 IMPORTRANGE
【发布时间】:2012-08-08 00:17:08
【问题描述】:

我有一个 Google Apps 脚本,可以将在 Google 表单中提交的信息与使用 IMPORTRANGE 函数导入 Google 电子表格的信息进行比较。如果我手动运行该脚本,但如果它从表单提交触发器运行,它会报告它没有从使用 IMPORTRANGE 的单元格中获取正确的信息。

有没有办法解决这个问题,比如我可以添加一个强制更新导入范围的快速函数吗?

我已经尝试添加最长 10 分钟的等待时间,但结果没有改变。

【问题讨论】:

    标签: google-apps-script google-sheets triggers importrange


    【解决方案1】:

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

    显然,电子表格的键、工作表的名称和范围只是这里的一个示例。

    【讨论】:

    • 只是一个提示,因为您是 StackOverflow 的新手,所以当您觉得自己得到了一个好的答案时,您应该将答案标记为已接受。投票(上下)也是我们这里的另一个不错的功能。这不是邮件列表;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2020-01-09
    • 1970-01-01
    • 2022-01-08
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多