【问题标题】:Google Sheets Script to return sheet name will not automatically update on creating a new sheet [duplicate]用于返回工作表名称的 Google 表格脚本不会在创建新工作表时自动更新 [重复]
【发布时间】:2017-11-13 16:04:24
【问题描述】:

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

函数被写入汇总表,其中输入作为所需表的索引给出。我已经预先编写了所有功能,例如

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

显然,当带有相关索引的工作表尚不存在时,我会收到错误消息。但是,当我创建该工作表时,单元格不会自动更新为新工作表的名称,它仍然返回错误。要显示名称,我必须删除该函数并重新粘贴。

有没有办法让单元格在添加新工作表时自动更新,而无需重新键入函数?

抱歉,如果我遗漏了一些明显的东西,我对此很陌生!

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
}

【问题讨论】:

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


【解决方案1】:

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

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

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

诚然,我不知道 OTHER 是什么,所以也许还有希望。

【讨论】:

  • 谢谢,这很有意义。我添加了来自here 的随机数更改,现在正在刷新我的函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多