为什么我的电子表格没有从外部来源的输入值更改?

时间:2019-06-13 19:20:13

标签: google-apps-script google-sheets

因此,我尝试使用外部源(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函数有替代方法,那么我将不胜枚举。我只需要一个可以在自己的副本中运行的功能。

1 个答案:

答案 0 :(得分:0)

作为协作工作的一部分,让我澄清一下Zapier部分(此答案与复制部分无关)。

第1部分。Zapier设置

假设您有一个第三方应用程序要从中提取数据(顺便说一句,因为您决定使用应用程序脚本,所以像Zapier那样丢弃中间人并连接到3P应用程序API是否更容易-如果它有一个,ofc –直接??),您创建了 Catch Hook POST操作

“ POST操作”设置包含几个字段:

  1. URL字段-这是/exec URL所在的位置(通过发布->部署为WebApp部署WebApp)。在将脚本部署为WebApp之后,您将获得一个供用户和脚本请求的URL(该URL始终为https://script.google.com/macros/s/{yourProjectId}/exec格式-由于访问权限而有一些细微差别)。为避免权限问题,请将有权访问该应用的人选项设置为任何人任何人,甚至匿名(否则,您必须设计验证处理)。
  2. Payload Type字段与此处无关,但我建议使用JSON
  3. 如果您选择了 POST操作,则必须填写
  4. Data字段,并且该字段应包含要通过Zapier传输的键/值数据对(这些数据将在{{1 }} / parameter属性(事件对象)。

第2部分。WebApp设置

已发布的WebApp应具有parametersdoGet()函数,以便能够接收和处理请求(或两者)。它们每个都接受一个特殊的参数,该参数是在每次向WebApp发出请求时构造的-一个事件对象

事件对象将包含您从Zapier发送的所有数据。然后,您可以使用此数据有条件地触发不同的函数,将数据传递给处理程序等。因此,您可以创建一个在doPost() / doGet内部调用的函数,而不是依赖触发器a)用新值填充目标表; b)之后执行其他任何操作,从而充当doPost / onEdit的类似物。

有用的链接

  1. Event object结构;
  2. Passing event个对象;
  3. Creating triggers关于其他文档;