手动复制工作表后,工作表名称识别脚本失败

时间:2017-08-29 18:46:37

标签: google-sheets

我有一张名为First的表单,其中包含单元格A1中的以下内容(见下文)。 在谷歌电子表格开发过程中手动重复First之后,我希望重复的单元格A1值为Second Round,但即使刷新了手动复制并重命名后也是如此Second,单元格A1的值为Copy of First Round

我可以更改脚本或其他内容以获得我想要的结果Second Round吗?

A1:= SHEETNAME()&"轮"

访问sheetname的脚本:

function sheetname() {
   var sheetname = SpreadsheetApp.getActiveSheet().getName();
          return sheetname;

}

1 个答案:

答案 0 :(得分:1)

需要某种触发器才能使函数运行。电子表格中单元格中的自定义函数仅在()内的单元格更改时才会运行。您可以将此值设置为较大范围,只要您不包含公式所在的单元格,因为这会导致错误。然后,当单元格更改时,您将获得更新。不幸的是,这不包括对工作表名称更改的引用,例如=getSheetname(Sheet1!B1:Z)

中的Sheet1

脚本中会发生触发器,并且可能导致给定的函数运行。 onChange触发器必须手动应用于函数,这意味着在脚本编辑器中将其设置在 Edit-> Current project的触发器下。然而,问题是它不会更新任何单元格,除非您在函数中有代码来更改特定单元格。所以你不会在单元格中有一个函数,但这在脚本编辑器中,A13设置为你想要工作表名称的单元格。一旦进入并设置了触发器,更改工作表名称将更改单元格值。

function getSheetname() {
  var ss = SpreadsheetApp.getActiveSheet();
  var sheetname = ss.getName();
  ss.getRange('A13').setValue(sheetname);
  return;
}