【问题标题】:Google Sheets custom function not working when downloading as published CSV下载为已发布的 CSV 时,Google 表格自定义功能不起作用
【发布时间】:2018-03-11 21:56:35
【问题描述】:
我在 Google 电子表格中创建了一个自定义函数,该函数根据循环、前缀、后缀和一些单元格引用,使用管道分隔的文件路径列表填充单元格。这在工作表本身上效果很好。
但我还使用“发布到网络...”功能将此工作表发布为 CSV。这也有效,只要我在浏览器中打开工作表。
但是,一旦我关闭该浏览器窗口,大约 5 分钟后(我相信是发布刷新窗口),这些单元格将填充“#NAME?”在下载的 CSV 文件中。似乎自定义函数无法在已发布 CSV 文件的“无头”模式下运行。
有没有办法解决这个问题?
【问题讨论】:
标签:
google-apps-script
google-sheets
custom-function
【解决方案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
}
}