Google return sheet 名称的工作表脚本不会在创建新 sheet 时自动更新

Google Sheets Script to return sheet name will not automatically update on creating a new sheet

我已经在 Google 表格中编写了一个脚本 return 给定 sheet 的名称(见下文)。

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

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

显然,当带有相关索引的 sheet 还不存在时,我得到一个错误。但是,当我创建那个 sheet 时,单元格不会自动更新为新 sheet 的名称,它仍然 return 是一个错误。为了让名称出现,我必须删除函数并重新粘贴它。

有没有一种方法可以让单元格在添加新的 sheet 时自动更新,而无需重新输入函数?

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

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
}

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

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

EDIT, INSERT_ROW, INSERT_COLUMN, REMOVE_ROW, REMOVE_COLUMN, INSERT_GRID, REMOVE_GRID, FORMAT and OTHER

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