2017-08-29 31 views
0

我有一张名为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

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

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

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

我认为你的答案是一样的解决方法的东西还不实用。对于我的应用程序,我需要的是当前表格的名称和上一张表格的名称,顺序依次命名:First,Second,...,Sixth。有这么几个我认为我会**手动**创建一对单元格第二,...,第六个包含它自己的名字和它的前任的名字。我想用户可以重新排列工作表的标签,但可能不会重新命名工作表。 – zerowords