【问题标题】:Sheetname recognizing script fails after manually duplicating sheet手动复制工作表后工作表名称识别脚本失败
【发布时间】:2017-08-29 18:46:36
【问题描述】:

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

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

A1:=SHEETNAME()&"圆形"

访问工作表名称的脚本:

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

}

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为您的答案就像是一些尚不实用的解决方法。对于我的应用程序,我需要的是当前工作表的名称和按顺序命名工作表的上一个工作表的名称:第一、第二、...、第六。这么少,我想我会手动在第二个、...、第六个表格中创建一对单元格,其中包含它自己的名字和它的前任的名字。我猜用户可以重新排序工作表的选项卡,但可能不会重命名工作表。
    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多