【问题标题】:Bound app scripts and multiple projects绑定应用脚本和多个项目
【发布时间】:2017-01-24 12:18:30
【问题描述】:

我第一次使用谷歌应用脚​​本。我从一位同事(不再与我们合作)那里继承了一个谷歌表(模板),该表在更改时运行一些脚本。我阅读的脚本应该是 bound 脚本。

当我打开脚本编辑器时,我看到了 2 个项目。一个是项目早期版本的副本。它们每个都有一个 onOpen() 函数。我的问题是工作表如何知道要调用哪一个?

为了复制行为,我创建了自己的工作表,然后使用脚本编辑器创建了两个项目,每个项目都具有 onOpen 函数。该功能在打开工作表时添​​加了一些菜单。 我看到这两个函数都被触发了,因为菜单名称不同。但是,我在有问题的原始模板中看不到相同的行为,它似乎只调用了两个脚本之一。

我检查了是否有任何触发器等,但似乎不存在。我也找不到这方面的文档。

【问题讨论】:

  • 您可能需要检查Scripts Bound to Google Sheets, Docs, or Forms 以完全了解绑定脚本的行为。它还对特殊方法、自定义菜单、对话框和侧边栏的使用提供了一些见解。它还提到了使用简单触发器或可安装触发器。

标签: google-apps-script


【解决方案1】:

它们都绑定到工作表,因为您的测试显示两个 onOpen(e) 都被调用。要知道最后编辑了哪个脚本或某些细节,您可以做的是检查每个脚本的修订历史记录(在每个脚本文件中 - > 查看修订历史记录)。

我认为最后一位开发人员没有评论代码,所以他一定是手动禁用了其中一个

【讨论】:

    【解决方案2】:

    事实证明,正如我提到的,这两个 onOpen 函数确实被触发了。其中的脚本和大量代码,但完全相同,最终效果在工作表上是相同的。很奇怪。

    我通过制作工作表的副本来修复它,让我删除一个项目并只保留一个。然后我删除了原始表格并将我的副本制作为正式表格(命名相同)。

    如果应用程序脚本选择通过强制对特定工作表上的函数进行显式触发器来使其明确无误,我会更喜欢。

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多