【问题标题】:Triggering Google Script function with REST API request使用 REST API 请求触发 Google Script 函数
【发布时间】:2017-02-10 18:29:21
【问题描述】:

当名为 Workato 的 REST API 软件从 Quick Base 接收数据并输入 Google 电子表格时,我在编辑时遇到了麻烦。

以下代码会自动对 Google 电子表格中的标签进行排序。

function onPost(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
   var ApprovedTab = ss.getSheetByName("APPROVED");
     var CollateralPending = ss.getSheetByName("COLLATERAL PENDING");
       var InProcessing = ss.getSheetByName("IN PROCESSING");
            var InClosing = ss.getSheetByName("IN CLOSING");
                  var funded = ss.getSheetByName("FUNDED");
  
  
 var ApprovedTabRange = ApprovedTab.getRange("A2:T99");
   var CollateralPendingRange = CollateralPending.getRange("A2:T99");
      var InProcessingRange = InProcessing.getRange("A2:T99");
         var InClosingRange = InClosing.getRange("A2:T99");
             var fundedRange = funded.getRange("A2:T99");
  
 ApprovedTabRange.sort( { column : 1, ascending: true } );
   CollateralPendingRange.sort( { column : 1, ascending: true } ); 
   InProcessingRange.sort( { column : 1, ascending: true } ); 
   InClosingRange.sort( { column : 1, ascending: true } ); 
   fundedRange.sort( { column : 1, ascending: true } ); 
  
}

当我尝试使用 onEdit 而不是 onPost 并手动更新电子表格中的一行时,它会按 ID 列对行进行排序。

当我尝试 onPost 并从 Workato 发送更新请求时,Google Script 函数没有运行,因此它没有对行进行排序。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 您说您正在尝试使用 REST 调用来调用 onPost。这是否意味着您的脚本是作为 web 应用发布的?
  • 不,不是。我实际上是 Google Scripting 的超级新手。我应该发布它吗?或者有什么解决办法吗?谢谢

标签: google-apps-script


【解决方案1】:

如果我理解正确,您希望电子表格在 Workato 编辑工作表中的数据后自动调用排序功能。

由于通过脚本或插件进行的编辑不会生成 OnEdit 触发器,因此您需要在 Workato 更新数据后发送单独的 POST 请求以触发电子表格中的 Google Apps 脚本函数。

要通过 POST 请求调用函数,您必须将函数命名为“doPost()”而不是“onPost()”,然后必须从“发布”菜单将脚本发布为网络应用程序。

在发布脚本时,您会希望以自己的身份“执行”,并且“任何人,甚至匿名”都可以访问。

将脚本发布为网络应用程序允许它通过名为 doGet()doPost() 的函数接收传入的 GET 或 POST 请求。

请参阅此处的文档: https://developers.google.com/apps-script/guides/web

【讨论】:

  • 感谢您的回复,但仍未触发该功能。我不确定,如果我在这里遗漏了一步。
  • 我已经按照 doPost 更新了我的功能,将其发布为 webapp 并发送 POST 请求,但功能仍然没有触发和排序。为脚本提供的 url 返回一个错误,“找不到脚本函数:doGet”。 Altohugh我使用了doPost,URL说它是一个get方法。
  • 该 URL 将始终接受 get 和 post 请求,它运行 doPost 或 doGet 取决于请求类型。
  • 也许我误解了 workato 在做什么,它是在更新工作表的内容,然后您希望在每次更新后对其进行排序吗?如果是这种情况,您需要单独发布帖子或获取对网络应用 URL 的请求以触发排序。
  • 我在 Google Script 中更新了我的函数。我现在收到此消息:脚本已完成但未返回任何内容。
猜你喜欢
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
相关资源
最近更新 更多