【问题标题】:Google Sheets custom function bug "Unknown function" after successful run成功运行后谷歌表格自定义功能错误“未知功能”
【发布时间】:2019-08-11 10:37:10
【问题描述】:

在 Google 表格单元格中,正在通过 =sheetName() 调用自定义函数以运行以下脚本(将返回当前表格名称):

function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

在第一次编辑(在单元格中插入代码)时,该函数可以正常工作,但由于工作表被重命名,该函数将无法工作,因为单元格(调用自定义函数)内容没有更新。再次编辑单元格将显示错误“未知函数”:

此时,在“违规”单元格中进行一些编辑,将再次正确运行自定义函数...

知道为什么该功能仅在编辑单元格内容时有效,而在重命名工作表“选项卡”时不会运行?

【问题讨论】:

  • 是否手动更改工作表名称?如果可以通过代码完成,您可以将renameActiveSheet("Hello world"); 用于新值,然后将其更新到单元格中

标签: google-apps-script google-sheets


【解决方案1】:

Google 表格经过优化,可以尽可能高效地进行重新计算。完成此操作的主要方法之一是通过查看函数的参数并仅重新计算具有已更改依赖项的单元格。

这通常不会导致问题,但是对于没有参数的函数,您会发现该函数运行一次并且永远不会再次运行。令人惊讶的是,即使您再次关闭并打开工作表,原始结果仍然存在。

一个 hacky 解决方案是在一个虚拟参数中放入一个对另一个单元格的引用。

=sheetName(A1)

如果您想重新计算,只需更改 A1 的内容,它将强制重新计算您的函数。

【讨论】:

  • 感谢@Aidan 非常感谢您的帮助!一个问题:有没有办法在工作表名称更改后触发更改,而不会影响太多性能?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
相关资源
最近更新 更多