我即将发布一个应用程序(时间表),其中多达80个用户将在他们自己的时间表上工作,我与他们共享。所有这些工作表目前都包含2个脚本(onOpen和onEdit),支持用户输入数据。
现在我担心的是,如果我必须在某个时间点对脚本进行更改,请更新所有这80个脚本。
有关于如何做到这一点的最佳做法吗?我可以使用“发布即服务”功能吗?如果是,我如何在这80个电子表格中应用此服务?
欢迎任何人欢迎。
亨氏
答案 0 :(得分:1)
还没有简单,标准的方法来做到这一点。我们都希望issue 40解决后会更容易。你应该对其进行加星标记以跟踪更新和投票类型。
现在,有一些解决方法。一个人可能适合你。其中一些是在issue 40评论中描述的,你应该真正阅读它。
第一个是“远程代码获取”。 80个脚本中的每个脚本都只有一个骨架脚本,可以获取要远程执行的代码。可能存储在“母亲”电子表格或网站的单元格中,您可以从脚本轻松访问该位置。这是一个例子:
var sourceScript = 'url-to-your-script-file-hosted-anywhere';
function onEdit() {
eval(UrlFetchApp.fetch(sourceScript).getContentText());
onEditImpl(); //this function is declared on the imported script
}
function onOpen() {
eval(UrlFetchApp.fetch(sourceScript).getContentText());
onOpenImpl(); //this function is declared on the imported script
}
//only hold the API calls that you may do on the imported script
//so there's a nice authorization popup for the user
function stub() {
return;
SpreadsheetApp.openById('').getRange('').setValue('');
CalendarApp.getCalendarById('').createAllDayEvent('', null);
SitesApp.getSite(''); //and so on...
//add/remove all services you'll use here in the stub
//more is better, in case you decide the script have to something new
//you don't have to go and edit each script manually :)
}
另一种可能的解决方法是使用“模板”电子表格,其中包含脚本。这样您就可以通过再次复制(使用更新的脚本)重新创建所有80个电子表格,并将每个文件的值和权限复制到新文件上。这种方法的缺点是所有文件的链接都会改变。文件,注释,文件夹等的每个用户设置都将丢失。但同样,根据您的使用情况,他们如何访问文件,例如他们甚至可能没有Google帐户,只有拥有该网站链接的任何人都可以共享该帐户。我不知道这个场景,它可能适合你。
这就是我所能想到的所有限制(使用onOpen和onEdit)。所有非常笨拙而不是真正的解决方案。但就目前而言,这就是我们得到的全部。