3

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

我试图通过为我的代码创建自己的版本来解决这个问题。我有一个 Web 服务返回我的库代码的最新版本号,以便我可以比较它,但是 onOpen() 无法运行 fetchURL。我尝试打开一个可以保留信息的电子表格,但是 onOpen() 再次不允许您 openById ...

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

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

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

有什么建议么?

4

2 回答 2

4

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

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

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

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

于 2012-10-05T02:47:02.533 回答
0

我知道的唯一解决方法,我确定我在这个论坛上看到过(如果我找到它,会链接线程),是为用户提供一些机制来手动运行一个脚本,让他们通过授权过程。这可能是工作簿开头的一张表,带有一个可按下的按钮和说明性文本。当脚本运行时,该“启动页”表可能会被脚本本身删除。

但结果是,您可能需要一个脚本(例如,菜单驱动的),而不是复制电子表格,该脚本将创建具有必要启动页面的电子表格副本。

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

于 2012-10-04T22:29:33.693 回答