【问题标题】:Combining a GET and POST request through an API in Google Apps Scripts通过 Google Apps 脚本中的 API 组合 GET 和 POST 请求
【发布时间】:2019-08-12 04:49:16
【问题描述】:

我在 Google Apps 脚本中组合 GET 和 POST 请求时遇到问题。我要结合的内容如下,但我不断收到错误。

function DBMdownload() {

var queryId = "xxxxxxx”;
var url = "https://www.googleapis.com/doubleclickbidmanager/v1/queries/" + queryId;
var data = xxxxxxx);
var payload = JSON.stringify(data);
  var options = {
    'method': 'get',
    'muteHttpExceptions': FLAGS.SHOW_HTTP_EXCEPTIONS,
    'headers': {'Authorization': ('Bearer ' + ScriptApp.getOAuthToken())}
     };

var options = { 
    'method': 'post', 
    'contentType': 'application/json', 
    'payload': payload, 
    'muteHttpExceptions': FLAGS.SHOW_HTTP_EXCEPTIONS,
    'headers': {'Authorization': ('Bearer ' + ScriptApp.getOAuthToken())} 
     };

var response = UrlFetchApp.fetch(url, options);
}

【问题讨论】:

  • “组合”以什么方式?一个接一个地提出要求? payload 在哪里定义?那很重要吗?你遇到了什么错误?
  • 您问题中的更多信息可能会更容易回答。 (例如,你所说的“组合”是什么意思?当你尝试它时你的代码是什么样的?当你尝试它时你会得到什么错误?...)
  • 是的,一个接一个。 Google Apps 脚本文档说使用 Payload 来下载 JSON 文件。
  • 那么,什么是有效载荷?你还没有声明。我们应该如何知道有效载荷是什么?无论如何,您的代码甚至都没有尝试发出这两个请求,它停在一个
  • 我更新了脚本,但不确定将什么作为数据变量。

标签: javascript post google-apps-script get urlfetch


【解决方案1】:

更新::

  1. 不确定什么是“组合请求”,但显然您必须分别发送它们,并且每个请求都应该有自己的方法和请求对象的所有其他字段。您可以使用UrlFetchAll 方法同时发送多个请求。
  2. 如果它是 JavaScript 对象并且您可以使用默认 contentType,则在发送 post 请求时您不必对有效负载进行字符串化。这是来自documentation 的示例:
var resumeBlob = ...
var formData = {
  'name': 'Bob Smith',
  'email': 'bob@example.com',
  'resume': resumeBlob
};
// Because payload is a JavaScript object, it is interpreted as
// as form data. (No need to specify contentType; it automatically
// defaults to either 'application/x-www-form-urlencoded'
// or 'multipart/form-data')
var options = {
  'method' : 'post',
  'payload' : formData
};
UrlFetchApp.fetch('https://httpbin.org/post', options);

否则,您必须明确设置 contentType 并提供字符串化 JSON 作为有效负载:

  var data = ...
  var options = {
    'method' : 'post',
    'contentType' : 'application/json',
    'payload' : JSON.stringify(data)
  };

  var reposnse = UrlFetchApp.fetch(url, options);
  1. 您可以通过解析可通过getContentText() 访问的 HTTP 响应数据来访问 post 请求返回的 JSON 数据:
var response = UrlFetchApp.fetch("http://www.google.com/");
var responseData = JSON.parse(response.getContentText());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2023-02-02
    相关资源
    最近更新 更多