用于返回工作表名称的Google表格脚本不会在创建新工作表时自动更新

时间:2017-11-13 16:04:24

标签: google-apps-script google-sheets custom-function

我在Google表格中写了一个脚本来返回给定表格的名称(见下文)。

该功能被写入摘要表,其中输入作为所需表单的索引。我预先写好了所有的功能,例如

A1 = GetSheet(1)B1 = GetSheet(2)C1 = GetSheet(3)... etc

显然,当有问题索引的工作表尚不存在时,我收到错误。但是,当我创建该工作表时,单元格不会自动使用新工作表的名称更新,它仍然会返回错误。要显示名称,我必须删除该功能并重新粘贴。

添加新工作表时,是否可以让单元格自动更新,而无需重新键入该功能?

道歉,如果我遗漏了一些明显的东西,我对此很新!

function GetSheet(input)
{
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var sourceIndex = sourceSheet.getIndex();
  var nextIndex = sourceIndex + 1;  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSheet(ss.getSheets()[input]);        
  var active = ss.getActiveSheet();
  var name = active.getName();                                   
  return name
}

1 个答案:

答案 0 :(得分:0)

不更改,因为他们的输入没有改变

在创建另一个工作表时,自定义函数没有返回任何内容的原因是因为这些函数的输入通常应该是单元格引用,并且当这些单元格引用的值发生更改时,函数将重新计算。但是你的输入只是数字(allSheets()数组的索引,并且创建另一个工作表不会改变他们的任何输入,所以他们永远不会有机会运行。我不认为创建新工作表会触发onChange I认为这些是触发onChange事件的唯一因素。

  

EDIT,INSERT_ROW,INSERT_COLUMN,REMOVE_ROW,REMOVE_COLUMN,INSERT_GRID,REMOVE_GRID,FORMAT和其他

不可否认,我不知道其他是什么,所以也许有希望。