如何解决Google Apps 脚本中两次调用POST 和 GET之间的延迟
我在 StackOverflow 上的第一个请求!我真的希望你能帮助我!
我想创建一个流程来将数据报告从系统自动化到工作表;我以为我可以使用他们的 API、应用程序脚本并将数据导出到 Google 表格中。
为此,我需要在 API 上运行两次调用:
- 一个 POST 调用,它在系统内运行报告(它需要一个日期范围作为正文)。 作为回报,我将获得一个与生成的数据相关联的 ID,它会在一段时间后过期。
- 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 举报,一经查实,本站将立刻删除。