因此,我尝试使用外部源(Zapier)将值输入到电子表格中。然后将这些输入值“转置(按公式计算)”到我的电子表格中,以适合它们要与之对齐的单元格坐标。
我已将电子表格设置为运行“ onEdit”,并且当这些传入值到达时,应该导致电子表格的其余部分发生更改,但该功能未运行。
但是,如果我要“手动”编辑电子表格,则onEdit函数可以完美运行。
那么,当外部源带来其输入值时,为什么电子表格不运行该功能?
更新:
因此,我发现,如果我手动授权“ onChange”可安装触发器,它将可以工作。但是,如果我创建完全相同的电子表格的副本,则副本中将不存在可安装的触发器。该副本需要具有触发器,而无需我手动进行。因此,我尝试在Google脚本编辑器中创建一个代码,该代码将允许我使用onChange函数或在Developer Hub中安装onChange函数。有什么想法吗?这是我尝试但无法使用的代码:
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("My
Sheet")
var ssid = "My SpreadSheet ID";
ScriptApp.newTrigger('My Sheet)
.forSpreadsheet(ss.getId())
.onChange()
.create();
myFunction()
{
如果onChange函数有替代方法,那么我将不胜枚举。我只需要一个可以在自己的副本中运行的功能。
答案 0 :(得分:0)
作为协作工作的一部分,让我澄清一下Zapier部分(此答案与复制部分无关)。
第1部分。Zapier设置
假设您有一个第三方应用程序要从中提取数据(顺便说一句,因为您决定使用应用程序脚本,所以像Zapier那样丢弃中间人并连接到3P应用程序API是否更容易-如果它有一个,ofc –直接??),您创建了 Catch Hook 和 POST操作。
“ POST操作”设置包含几个字段:
URL
字段-这是/exec
URL所在的位置(通过发布->部署为WebApp部署WebApp)。在将脚本部署为WebApp之后,您将获得一个供用户和脚本请求的URL(该URL始终为https://script.google.com/macros/s/{yourProjectId}/exec
格式-由于访问权限而有一些细微差别)。为避免权限问题,请将有权访问该应用的人选项设置为任何人或任何人,甚至匿名(否则,您必须设计验证处理)。Payload Type
字段与此处无关,但我建议使用JSON
。Data
字段,并且该字段应包含要通过Zapier传输的键/值数据对(这些数据将在{{1 }} / parameter
属性(事件对象)。第2部分。WebApp设置
已发布的WebApp应具有parameters
或doGet()
函数,以便能够接收和处理请求(或两者)。它们每个都接受一个特殊的参数,该参数是在每次向WebApp发出请求时构造的-一个事件对象。
事件对象将包含您从Zapier发送的所有数据。然后,您可以使用此数据有条件地触发不同的函数,将数据传递给处理程序等。因此,您可以创建一个在doPost()
/ doGet
内部调用的函数,而不是依赖触发器a)用新值填充目标表; b)之后执行其他任何操作,从而充当doPost
/ onEdit
的类似物。
有用的链接