Javascript 如何让触发器在复制的电子表格中工作+;剧本

Javascript 如何让触发器在复制的电子表格中工作+;剧本,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我目前正在创建一个电子表格,用户可以在其中输入项目编号,该表格将在接下来的两列中返回说明和价格 电子表格从另一个工作表(不是另一个页面,而是一个完全不同的URL)中提取项目信息,每次输入项目编号时,工作表都会自动更新(没有vlookup,因为信息位于另一个URL上) 最有可能的是,多人同时需要此表单,并且他们还需要一份副本作为参考记录。他们都可以访问“主文件”,即我拥有的主文件,我希望他们可以简单地复制一份,然后填写表格 然而,虽然我的脚本中的代码在主文件上运行得很好,但当他们复制时,程序将无法

我目前正在创建一个电子表格,用户可以在其中输入项目编号,该表格将在接下来的两列中返回说明和价格

电子表格从另一个工作表(不是另一个页面,而是一个完全不同的URL)中提取项目信息,每次输入项目编号时,工作表都会自动更新(没有vlookup,因为信息位于另一个URL上)

最有可能的是,多人同时需要此表单,并且他们还需要一份副本作为参考记录。他们都可以访问“主文件”,即我拥有的主文件,我希望他们可以简单地复制一份,然后填写表格

然而,虽然我的脚本中的代码在主文件上运行得很好,但当他们复制时,程序将无法运行。我知道这与触发器没有被复制有关,我已经阅读了脚本中关于编写触发器的内容,但问题出在这里

用户看不到脚本-也就是说,我们不希望他们看到任何代码。所以他们不能进入,通过“资源”打开触发器,或者在脚本编辑器中单击运行/调试

因此,基本上我需要一个用户能够打开一个共享的,只能查看的文件,制作一份电子表格的副本(它从另一张表格中获取信息并有触发器),并使用电子表格输入商品编号。这些人中的大多数人不应该能够看到内部的工作原理,而且无论如何也不会理解其中的任何一个


我在想一个可能的解决方案,就像他们在25:56或37:355时所做的那样,他们可以按下一个按钮,它会写入触发器。不过,他们没有讨论如何做。

据我所知,这里不需要脚本,电子表格公式就可以了。
要将数据从一个电子表格导入到另一个电子表格,可以使用公式“importData”并将这些数据放入隐藏表中。
然后你可以在这个导入中使用“vlookup”公式,或者更好的是使用“filter”公式(试试你会喜欢的过滤公式)

如果您的用户都在一个私有域中,您最好的解决方案是(即,仅对域用户可用)。如果您使用的是消费者帐户,则不能选择此选项

或者,您可以使用菜单驱动函数以编程方式创建所需的触发器。这在您的情况下是有效的,因为:

  • “原始”电子表格以只读方式共享,用户需要制作个人副本以输入自己的数据
  • 用户将是其副本的所有者,因此所包含的脚本将作为他们和为他们运行
例如,你可以试试。它是共享的、公共的、只读的,但是如果保存副本,您将看到一个自定义菜单,该菜单设置触发函数,并更新电子表格中的第一个单元格。10秒后,触发功能再次更新

演示脚本包含在电子表格中,因此您可以在那里亲自查看。以下是它包含的全部内容:

//创建一个将初始化触发器的菜单
函数onOpen(){
var ui=SpreadsheetApp.getUi();
ui.createMenu(“自定义菜单”)
.addItem('初始化电子表格','设置触发器')
.addToUi();
}
函数setTrigger(){
//清除任何现有触发器
var triggers=ScriptApp.getUserTriggers(SpreadsheetApp.getActive())

对于(var i=0;iHey Harold,首先我感谢您的回复!其次,我希望我能将其限制在表格公式中,但由于项目价格的计算方式和安全问题,这是不可能的,原因有两个。首先,解决项目价格采取了许多步骤-有州税、项目特定税、期限税第二,用户需要能够编辑表单,我主要担心的是有人会注意到隐藏的表单,取消隐藏,然后了解信息。当你说私有域时,你是指公司的g-mail帐户,这样你就可以选择在“公司内”设置帐户只能查看、访问、编辑等。此外,我制作了一份文件副本,直到我进入选项卡并运行每个功能,脚本才运行。老实说,按钮的想法似乎是最吸引人的。与我一起工作的人几乎没有编码知识,有时在做简单的工作表公式时会绊倒。我认为这会给他们留下深刻印象。是的,我用“私有域”来指任何谷歌应用程序域(商业、教育、非营利)。在复制的电子表格中,菜单在打开工作表几秒钟后显示。选择菜单的一个选项将启动授权对话框,然后触发器将运行。感谢您的澄清!不幸的是,您链接的示例工作表不起作用。我复制了一份,脚本不会启动。我可以看到它说“工作…”在顶部,但不是床单上的变化。没关系!我现在明白你的意思了,莫格斯达,非常感谢!