下载已发布的CSV时,Google表单自定义功能无效

时间:2018-03-11 21:56:35

标签: google-apps-script google-sheets custom-function

我在Google电子表格中创建了一个自定义函数,该函数使用基于循环,前缀,后缀和一些单元格引用的管道分隔的文件路径列表填充单元格。这对纸张本身很有效。

但我也使用"发布到网络上将此表格作为CSV发布..."功能。这也有效,只要我在浏览器中打开了工作表。

但是一旦我关闭浏览器窗口,大约5分钟后(我相信发布刷新窗口),这些单元格会填充" #NAME?"在下载的CSV中。似乎自定义功能不能在"无头"已发布CSV文件的模式。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

自定义函数不会为发布的视图提供值,因为它们在访问者的范围内运行。对于已发布的视图,这是一个匿名访问者,无法访问脚本资源(因此#NAME错误)。

解决方案是从脚本函数实现静态值赋值。根据您的电子表格使用情况(您不提供确切信息),可以使用on edit或基于时间的触发器来调用自定义计算。

我怀疑你需要一个在编辑包含文件路径的单元格时触发的函数,并写入给定的静态范围。

function onEdit(e) {
  // Ensure the edited cell was the correct sheet and column.
  var s = e.range.getSheet();
  if(s.getName() == ... && e.range.getColumn() == ... ) {
    // Your code called from here
  }
}