微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Apps 脚本中两次调用POST 和 GET之间的延迟

如何解决Google Apps 脚本中两次调用POST 和 GET之间的延迟

我在 StackOverflow 上的第一个请求!我真的希望你能帮助我!

我想创建一个流程来将数据报告从系统自动化到工作表;我以为我可以使用他们的 API、应用程序脚本并将数据导出到 Google 表格中。
为此,我需要在 API 上运行两次调用

  1. 一个 POST 调用,它在系统内运行报告(它需要一个日期范围作为正文)。 作为回报,我将获得一个生成的数据相关联的 ID,它会在一段时间后过期。
  2. GET 调用,它是一个 URL,其中包含在第一次调用生成并通过串联创建的 ID。

第一次调用正常;我成功返回ID。

我的问题是当我运行第二个调用时,我没有得到任何数据作为回报,我不明白这是什么问题,我可以看到 URL 正确连接,因为如果我从日志中复制 URL我在另一个应用程序脚本或 Postman 上对其进行了测试,效果非常好! 如果我做错了什么,有人可以帮助我吗? 代码如下:


    function callEvents() {
      var API_KEY = "xxx";
      var data = { 'Start Date': '2021-05-03','End Date': '2021-06-03' }
      var options = {
        'method' : 'post','contentType': 'application/json','payload' : JSON.stringify(data) };
    //This is the first call
       var urlEncoded = encodeURI('https://website/api/dataviewresult/
                 etc/json/?api_key=' + API_KEY);
       var url = UrlFetchApp.fetch(urlEncoded,options);
      var result = JSON.parse(url.getContentText());
     Logger.log(url.getContentText());
    //here I retrieve the ID to use in the second call
    var ipdataview = (result["contents"]["id"]);
      Logger.log(ipdataview);

//here is the concatenation and the second call
      var urlEncoded2 = encodeURI('https://website/api/dataviewresult/etc/json/'+ipdataview+'/?api_key=' + API_KEY);
        Logger.log(urlEncoded2);
      var response = UrlFetchApp.fetch(urlEncoded2);
        Logger.log(response.getContentText());

解决方法

我找到了解决方案,我从第一个调用开始执行第二个调用 (Get) 太快了,所以数据没有被拾取。

我使用了utilities.sleep() 大约2 秒钟,效果很好。

感谢大家的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。