当我在 Google 表格项目中有 macros.gs 和“Macros.gs 的副本”时,这是默认设置?

问题描述

在我的 Google 表格项目中,我有一个 macros.gs。在“工具”->“脚本编辑器”中,我复制了 macros.gs,并添加名称copy of macros.gs”。

认选择哪个?我假设我的 Google Sheet 项目使用的是最新的,不知道如何找到 google 产品版本号。我知道它在几周前(2021 年 4 月至 5 月)使用的是较新版本的编辑器。

我看到了一些奇怪的东西。我对 macros.gs 中的这些函数之一进行了定时宏执行。我认为它按照我看到的列表的顺序选择 macros.gs 或 macros.gs 的副本。很可能是最底层的版本。这是真的吗?

另一方面,当我打开脚本编辑器时,它认打开复制版本,它位于 macros.gs 之上。是的,我可以在启动脚本编辑器后通过从左侧面板中选择来切换版本。

我希望使认脚本编辑器打开版本与定时执行使用的认版本相同。非常感谢任何帮助。

解决方法

Apps 脚本项目的所有函数名称都应该是唯一的

  • 因此,函数是位于同一个 .gs 文件中还是位于两个不同的文件中并不重要。

  • 在原始 .gs 文件和副本中具有相同名称的函数会导致不良行为。

如果你想知道哪个 .gs 文件是默认的,你可以通过一个简单的测试来找出它:

  • 在包含内容的绑定脚本中创建一个 Macro.gs 文件
function myFunction() {
  SpreadsheetApp.getActive().getActiveSheet().getActiveCell().setValue("old script")
}
  • 复制 macro.gs 文件
  • 将副本的内容更改为
function myFunction() {
  SpreadsheetApp.getActive().getActiveSheet().getActiveCell().setValue("copy")
}

enter image description here

  • 点击按钮,看看发生了什么:

enter image description here

默认调用的是 copy 的函数。

如果这不是您想要的 - 您需要重命名所有函数以确保它们具有唯一的名称或注释掉脚本文件中您不想被调用的函数。