2017-08-04 1779 views

回答

1

你有2个选择,我不知道如果我是他们的枯萎的粉丝,但是这是我的看法。你可能会有不同的感觉:

选项1:强制函数运行。

单元格中的函数不会运行,除非它引用已更改的单元格。更改工作表名称不会触发电子表格中的任何功能。但是我们可以强制函数通过向其传递一个范围来运行,并且只要该范围内的某个项发生更改,该函数就会触发。

您可以使用下面的脚本来创建一个自定义函数,将检索名称:

function mySheetName() { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    return key; 
} 

,并在细胞发生如下:

=mySheetName(A1:Z) 

现在,如果在单元格中的任何值在通过范围内改变脚本将运行。这需要一秒钟的时间来运行脚本,并在每次更改任何值时在单元格中设置一条消息,因此这可能会很快变得令人讨厌。如前所述,它还需要更改范围以使其触发,因此对于相当静态的文件并不真正有用。

选项2:使用onChange事件

虽然运行时感觉比上面的选项更好,这不取决于值在电子表格中的细胞发生变化,我不喜欢这样,因为它迫使名字去的地方。如果您愿意,您可以使用实用工具表在各种工作表中定义此位置。下面是基本的想法,如果你喜欢这个选项,可能会让你开始。

当表名更改时,OnChange事件被触发。您可以在下面更复杂的代码来检查错误,请检查表ID只能工作在给定片等基本代码,却是:

function setSheetName(e) { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('K1').setValue(key); 
} 

一旦保存代码,在脚本编辑器将当前项目的On Change Trigger设置为此函数。它将在任何更改事件中将工作表名称写入单元格K1。要设置触发器,请选择当前项目的触发器下的编辑菜单。

相关问题