Mar*_*rov 0 google-sheets google-apps-script google-apps-script-addon
在我们的组织中,我们使用Google电子表格作为内部应用的数据输入.我创建了一个Google Apps脚本,以便于修改电子表格.
如您所见,此脚本依赖于电子表格格式,并提供仅适用于我们组织的特定用途.
我的问题是如何自动推送所有使用它的电子表格实例的更改?
我可以将脚本添加到脚本库但我认为它不适合这些类型的脚本,如果主副本的任何更改将被推送到客户端,我也找不到信息.
我看到的另一个选项是创建一个包含内部脚本的电子表格模板,但同样会推送更改吗?
分发特定(有界)脚本的最简单方法是创建一个包含脚本的模板电子表格.如果您的脚本更通用并且可供任何人使用,则Gallery适用.
现在,没有很好的解决方案来推动脚本副本的更改,无论你如何分发你的脚本,因为最后每个"安装"都是一个独立的副本,没有链接到原始版本.
最简单但仍然很麻烦的方法是使用库.将所有逻辑放在库中,并且只将脚本放在要复制的脚本中.即一个onOpen和onEdit功能和存根菜单功能.像这样的东西:
function onOpen(e) { return Lib.onOpen(e); }
function onEdit(e) { return Lib.onEdit(e); }
function stub1() { return Lib.stub1(); }
function stub2() { return Lib.stub2(); }
//etc... as many as you need, than a couple more for future growth
Run Code Online (Sandbox Code Playgroud)
这个分布式脚本将导入Lib包含所有逻辑的主脚本().例如
function onOpen(e) {
e.source.addMenu('Custom Menu', [{name:'Do something', functionName:'stub1'}]);
}
function onEdit(e) {
;//something
}
function stub1() {
Browser.msgBox('Example');
}
Run Code Online (Sandbox Code Playgroud)
现在,仍有一个问题是,当您更新Lib时,您或您的用户必须进入具有该脚本的所有文档的脚本编辑器并手动更新库版本.
你甚至可以做一些奇特的事情,因为让onOpen函数检查一下ScriptProperty(你可以轻松地手动更改而不更新版本)并通知你的用户他们需要更新他们的脚本(即进入脚本编辑器并更新库版本).
还有的开发模式,可以导入库时,可以设置标志,避免这方面的需要去和更新库版本.但它仅在运行脚本的用户是导入库的开发人员时才有效.也就是说,如果您的用户不是您自己,则必须与他们共享您的图书馆以获得编辑权限.这可能是您可以接受的,如果它们都属于您的域名或朋友之间.但这不是一个明确的解决方案.
另一个可能的解决方法是,使用,个人不喜欢,但可能为你做的伎俩eval.您可以将"逻辑"代码保存在Google文档或其他位置,然后在脚本上获取它然后eval运行您的功能.您仍需要在每个脚本上使用一些样板代码,但您的用户无需执行任何操作即可获取更新的代码.您还需要向分布式脚本中的Apps脚本中使用的所有服务添加存根调用,这样就会提示用户获得所需的所有授权.
最后,在Apps脚本问题跟踪器上打开的一些 问题以某种方式与此相关.你应该"明星"他们接收更新和投票给他们.我特意为此开了一个.