【问题标题】:Trying to call an API using a trigger and get data尝试使用触发器调用 API 并获取数据
【发布时间】:2016-09-28 06:20:24
【问题描述】:

我对此很陌生,我正在努力解决它。如果有人真的能拯救我的一天,我会很高兴。

尝试使用触发器调用 API 并使用谷歌脚本获取数据,这是我想出的最好的方法。

基本上我有一个 api,如果我把它放在 Postman 中,它会给我对象。我需要做的就是在谷歌电子表格中获取这些对象。

我尝试了 onOpen 函数,它给了我一个错误“你没有权限调用 Fetch”。

所以一直在尝试将第一列编辑为“获取数据”,以便可以调用 api。

提前致谢

function onEdit(e) {


    var s = SpreadsheetApp.getActiveSheet();

  if (s.getName() == "Sheet1") { //checks that we're on the correct sheet
    var r = s.getActiveCell();


    //Updates timestamp for lead entry and meetings.
    var currentCellValue = r.getValue();
    var user = Session.getEffectiveUser();
    if (r.getColumn() == 1 && (currentCellValue == 'Get Data')) { //checks the column
      var nextCell = r.offset(0, 4);
      if (nextCell.getValue() == '') { //is empty?
        nextCell.setValue(Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/yyyy HH:mm:ss")).setComment(user);


        var url = "My API";
        var headers = {
          "Content-Type": "application/json",
          "Authorization": "userkey"

        };
        var options = {"method":"GET","headers": headers 
        };
        var response = UrlFetchApp.fetch(url, options);
        Logger.log(response[0]);
      }

    }
 }

}

【问题讨论】:

    标签: arrays json google-apps-script google-api-php-client


    【解决方案1】:

    这似乎是一个长期存在的问题,仍未得到解决,请参阅here

    线程中有人提到

    但是,使用像 myOnEdit() 这样的自定义函数名称,并连接它 手动到 onEdit 事件,完全有效!

    function myOnEdit(e) { ... var x = fetchUrlApp.fetch(...); ... }

    因此,您必须创建myOnEdit,然后通过资源 > 当前项目的触发器或通过触发器服务在其上放置一个 onEdit 触发器。

    【讨论】:

    • 已经检查过另一篇有效的文章。但不是在编辑。无论如何,这可以让我得到相同的数据。下面的链接可以帮助那些希望在 UrlFetch 上获取数据的人.. gist.github.com/varun-raj/5350595a730a62ca1954.. 谢谢 Robin
    猜你喜欢
    • 2019-10-16
    • 1970-01-01
    • 2020-06-28
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    相关资源
    最近更新 更多