Google apps script 找到使用库版本的方法吗?

Google apps script 找到使用库版本的方法吗?,google-apps-script,Google Apps Script,我正在通过库在多个电子表格上部署脚本。 但是,正如您可能知道的,脚本无法(目前)知道它是否正在运行最新版本 我正试图通过为代码创建自己的版本来找到解决方法。 我有一个web服务返回我的库代码的最新版本号,这样我可以比较它,但是onOpen()不能运行fetchURL。我试着打开一个电子表格来保存信息,但是onOpen()不允许你打开ByID onOpen()触发器具有安全限制,使我无法查阅可用于保持版本控制的外部数据源 注意:我不想对onOpen()事件使用脚本触发器。复制电子表格时不会复制脚本

我正在通过库在多个电子表格上部署脚本。 但是,正如您可能知道的,脚本无法(目前)知道它是否正在运行最新版本

我正试图通过为代码创建自己的版本来找到解决方法。 我有一个web服务返回我的库代码的最新版本号,这样我可以比较它,但是onOpen()不能运行fetchURL。我试着打开一个电子表格来保存信息,但是onOpen()不允许你打开ByID

onOpen()触发器具有安全限制,使我无法查阅可用于保持版本控制的外部数据源

注意:我不想对onOpen()事件使用脚本触发器。复制电子表格时不会复制脚本触发器

因此,对于如何通过指向外部数据源(url或其他电子表格,任何东西!)来检查onOpen()触发器事件上的库版本,我已经没有什么想法了


有什么建议吗?

我知道的唯一的解决办法,我相信我在这个论坛上看到过(如果我找到它,将链接该线程),是为用户提供一些机制,让用户手动运行脚本,引导他们完成授权过程。这可能是工作簿开头的一张工作表,其中包含一个按钮和解释性文本。当脚本运行时,脚本本身可以删除“初始页面”页

但是,因此,您可能需要一个脚本(例如,菜单驱动)来创建一个带有必要启动页的电子表格副本,而不是复制电子表格


不理想,但这是我唯一能想到的。

最简单的解决方案是向库中添加一个getVersion()方法,并在每次更新库时手动更新它

编辑:我知道你不仅想知道版本,还想知道这是否是最新版本。您可以将该信息存储在库的ScriptProperties中,并具有如下功能:

function isLatestVersion() {
  return currentVersion == ScriptProperties.getProperty("latestVersion");
}

(我假设您可以将currentVersion硬编码到代码中,并在每次重新部署webapp时对其进行更改。)可以通过“文件”>“项目属性”菜单编辑脚本属性,并且您可以在不重新部署脚本的情况下更改值,因此,通过从该菜单更改latestVersion,您将使旧版本在调用isLatestVersion()时突然开始响应“false”。

否问题在于知道代码的版本是否为最新版本。由于我们无法访问库版本号,因此我必须从外部检查数据源中的信息,我将手动维护该数据源,以确定哪个版本号是最新版本号。然后我可以将它与运行脚本的版本号进行比较。问题是OneEdit()和onOpen()限制阻止使用urlfetch或onOpenById()访问数据。因此,当我的用户打开电子表格时,我无法检查他们是否正在运行最新的代码。如果您希望您的脚本能够获得它正在运行的项目版本,请转到“star”@Edo的相应版本。你的明星就等于投了这项功能的一票。(请求位于官方应用程序脚本问题跟踪器中,指向官方谷歌应用程序脚本支持页面。)