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

Posted

技术标签:

【中文标题】Google Apps 脚本中两次调用(POST 和 GET)之间的延迟【英文标题】:Delay in between two calls (POST and GET) in Google Apps script 【发布时间】:2021-06-09 17:42:56 【问题描述】:

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

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

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

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

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

函数调用事件() var API_KEY = "xxx"; var data = '开始日期': '2021-05-03', '结束日期': '2021-06-03' 变量选项 = '方法':'发布', 'contentType': '应用程序/json', '有效负载' : JSON.stringify(data) ; //这是第一次调用 var urlEncoded = encodeURI('https://website/api/dataviewresult/ etc/json/?api_key=' + API_KEY); var url = UrlFetchApp.fetch(urlEncoded, 选项); var 结果 = JSON.parse(url.getContentText()); Logger.log(url.getContentText()); //这里我检索要在第二次调用中使用的 ID var ipdataview = (result["contents"]["id"]); 记录器.log(ipdataview); //这里是连接和第二次调用 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());

【问题讨论】:

您的脚本中似乎运行了 3 个请求。我可以问你关于你的剧本的细节吗?而且,我可以问你目标的细节吗?另外,能否提供一下你想使用的API方法的官方文档? 嗨@Tanaike,确切地说,第三个请求只是对第二个请求的测试,将 URL 完整粘贴,而不是使用第一个请求中的 KEY API 和 ID 数据视图的组合构建.我只是离开它以了解为什么第三个请求可以正常工作,但具有相同 URL 的第二个请求不会返回任何数据。我的最终目标是从外部系统检索数据以进行事件规划并将事件列表报告到谷歌表中。我要使用的方法在这里提到了link。 你能解释一下是什么问题吗,我知道第一次调用是获取调用所需的数据,然后调用 2 和 3 相同,但 2 不起作用。但是如果功能3有效,为什么不能使用呢? 我需要创建一个 GET Url,其中包含第一次调用 (POST) 返回的数据报告的 id。我不明白为什么我用报告 ID 和密钥 API 创建 URL 的编码不起作用,因为我在第二次调用中没有得到任何数据。第三次调用有效,但它与第二次调用中生成的 URL 相同,我只是复制并粘贴它。理想情况下,我希望这是自动化的 感谢您的回复。从您的回复中,我了解到您的第三个请求可以正常工作,而您的第二个请求无效。我无法理解您的第一个请求。我为此道歉。我无法想象My final goal is to retrieve data from an external system for events planning and reporting the list of events into a google sheet.。可以问一下具体情况吗? 【参考方案1】:

我找到了解决方案,我从第一个调用 (Get) 过早地执行了第二个调用,因此没有获取数据。

我使用了 utility.sleep() 大约 2 秒,它运行良好。

感谢大家的帮助! S

【讨论】:

以上是关于Google Apps 脚本中两次调用(POST 和 GET)之间的延迟的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本中的 POST 请求和 405 错误

使用 Google Apps 脚本的 Facebook API 批处理请求

从 Google Apps 脚本调用 Twitter API

A 列到 B 列的重复值 - Google Apps 脚本

Google Apps脚本:动态单元格位置;无权调用setValues

如何防止在node.js中两次调用相同URL的获取