我正在通过库在多个电子表格上部署脚本。 但是您可能知道,脚本无法知道它是否正在运行最新版本。
我试图通过为我的代码创建自己的版本来找到解决方法。 我有一个Web服务返回我的库代码的最新版本号,所以我可以比较它,但onOpen()不能运行fetchURL。我尝试打开一个可以保存信息的电子表格,但是onOpen()再次让你打开openById ......
onOpen()触发器具有安全限制,阻止我查询可用于保持版本控制的外部数据源。
注意:我不想对onOpen()事件使用脚本触发器。复制电子表格时不会复制脚本触发器。
因此,如果通过指向外部数据源(作为网址,其他电子表格 - 任何内容!)来检查onOpen()触发器事件上的库版本,我的想法已经不多了。
有什么建议吗?
答案 0 :(得分:3)
最简单的解决方案是将getVersion()方法添加到库中,并在每次更新库时手动更新它。
编辑:我看到你不仅想知道版本,还想知道这是否是最新版本。您可以将该信息存储在库中的ScriptProperties中,并具有如下函数:
function isLatestVersion() {
return currentVersion == ScriptProperties.getProperty("latestVersion");
}
(我假设你可以将currentVersion硬编码到代码中并在每次重新部署webapp时更改它。)可以通过File>编辑脚本属性。 “项目属性”菜单,您可以在不重新部署脚本的情况下更改值,因此通过从该菜单更改latestVersion,您将使旧版本在调用isLatestVersion()时突然开始响应“false”。
答案 1 :(得分:0)
我所知道的唯一的解决方法,我确定我已经在这个论坛上看过了(如果我发现它将链接线程),是为用户提供一些机制来手动运行将通过授权过程的脚本。这可能是工作簿开头的工作表,其中包含按下按钮和说明文本。当脚本运行时,那个"启动页面"表格可以被脚本本身删除。
但结果是,您可能需要一个脚本(比如菜单驱动)来创建电子表格的副本,而不是复制电子表格。
不理想,但这是我唯一能想到的。