【问题标题】:Sheet name is not updating with the script工作表名称未随脚本更新
【发布时间】:2017-06-16 14:27:04
【问题描述】:

在我的谷歌电子表格中,我创建了一个脚本(如下),它为我提供了函数/公式来获取我当前所在的工作表/选项卡的名称。

问题是当我将工作表名称更改为新名称时,即使经过多次刷新,此单元格也不会使用新名称更新。

我已经设置了触发器来运行脚本,并且我已经使用 SpreadsheetApp.flush() 来强制应用所有待处理的电子表格更改,但这仍然不起作用。

下面是我的脚本:

function sheetname() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var s = ss.getActiveRange().getSheet();
   return s.getName();
}

这是同花顺:

function sheetname() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveRange().getSheet();
   SpreadsheetApp.flush();
   return s.getName();
 }

请让我知道我需要进行哪些更改,以便在工作表名称更改时更新。

【问题讨论】:

  • 通过更改工作表选项卡名称来运行代码的唯一方法是安装使用“更改时”事件的触发器。我认为“On Change”会检测到正在重命名的工作表选项卡,但我不确定。你需要自己测试一下。
  • 感谢您的回复。不,它也不适用于“更改时”触发器。

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


【解决方案1】:

当连接到 onChange 触发器并且工作表名称发生更改时,此功能起作用。我认为您将其作为“=sheetName()”添加到单元格中。我不得不承认我对自定义函数了解不多,因为我总是在数组中进行所有计算,因为它要快得多。但是,如果您将其连接到 onChange 事件并将工作表名称的加载值设置到单元格中,它就可以工作。

function sheetName()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getActiveSheet();
  var name=sht.getName();
  sht.getRange('A5').setValue(name);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多