首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从google应用程序脚本[自定义功能刷新]获得自动刷新google扩展表自定义单元格功能

如何从google应用程序脚本[自定义功能刷新]获得自动刷新google扩展表自定义单元格功能
EN

Stack Overflow用户
提问于 2020-07-09 04:03:53
回答 1查看 706关注 0票数 1

如何在创建新工作表或更改工作表名称或复制工作表或从google散页中删除工作表时,通过google应用脚本自动刷新当前的工作表列表

*我需要名单名称:

  1. 有很多床单
  2. 新页将由其他用户添加。
  3. 新工作表的名称将由其他用户更改
  4. 一些工作表将被其他用户删除
  5. 我需要现有的工作表名称列表,而不是过去

*:

表名列表应该显示在第二个工作表上,代码表达式为sheet1

下面的代码运行良好。但它并不是通过添加工作表或删除工作表来刷新

代码语言:javascript
运行
复制
function sheetnames()
{
 return SpreadsheetApp.getActiveSpreadsheet().getSheets().map(function(x) {return x.getName();});
}
EN

Stack Overflow用户

回答已采纳

发布于 2020-07-09 05:20:02

我相信你的处境和目标如下。

  • 您正在使用sheetnames()函数作为Google电子表格上的自定义函数。
  • 您已经确认您的sheetnames()功能正常工作。
  • 当工作表被删除、插入、复制和工作表名称更改时,您希望刷新自定义函数。

为了达到上述目的,我想提出以下方法。

用法:

1.编写脚本。

在本例中,用于刷新电子表格中sheetnames()的自定义函数的示例脚本由OnChange事件触发器运行。为此,请将以下示例脚本复制并粘贴到电子表格的容器绑定脚本中,并保存脚本。

代码语言:javascript
运行
复制
function onChange(e) {
  var lock = LockService.getDocumentLock();
  if (lock.tryLock(10000)) {
    try {
      const prop = PropertiesService.getScriptProperties();
      if ((e.changeType === "OTHER" || e.changeType === "REMOVE_GRID" || e.changeType === "INSERT_GRID") && !prop.getProperty("run")) {
        const formula = "=sheetnames";  // <--- Please set the function name of the custom function.
        const ss = e.source;
        const tempFormula = "=sampleFormula";
        ss.createTextFinder("^\\" + formula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(tempFormula);
        ss.createTextFinder("^\\" + tempFormula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(formula);
        prop.setProperty("run", "done");
      } else {
        prop.deleteProperty("run");
      }
    } catch(e) {
      throw new Error(e);
    } finally {
      lock.releaseLock();
    }
  }
}
  • 为了避免脚本的重复运行,使用了LockService
  • 为了避免触发器的无限循环,使用了PropertiesService

2.安装OnChange事件触发器。

为了执行onChange的函数,请将OnChange事件触发器安装到函数onChange上。您可以在这份正式文件上看到安装该程序的方法。

3.测试

为了测试上面的脚本,例如,在您将函数onChange安装为可安装的OnChange事件触发器后,请插入新的工作表。这样,您就可以确认自定义函数sheetnames()是刷新的。

参考文献:

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62807234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档