javascript - 通过 Google Apps 脚本中的 API 组合 GET 和 POST 请求

标签 javascript post google-apps-script get urlfetch

我在 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);
}

最佳答案

更新::

  1. 不确定什么是“组合请求”,但显然您必须单独发送它们,并且每个请求都应该有自己的方法以及请求对象的所有其他字段。您可以使用 UrlFetchAll 同时发送多个请求方法。
  2. 如果发送 post 请求时有效负载是 JavaScript 对象并且您可以使用默认 contentType,则无需对有效负载进行字符串化。这是 documentation 中的示例:
var resumeBlob = ...
var formData = {
  'name': 'Bob Smith',
  'email': '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="73111c1133160b121e031f165d101c1e" rel="noreferrer noopener nofollow">[email protected]</a>',
  '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);
  • 您可以通过解析可通过getContentText()访问的HTTP响应数据来访问post请求返回的JSON数据。 :
  • var response = UrlFetchApp.fetch("http://www.google.com/");
    var responseData = JSON.parse(response.getContentText());
    

    关于javascript - 通过 Google Apps 脚本中的 API 组合 GET 和 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57455771/

    相关文章:

    javascript - 使用 animate.css [已编辑] 在第一个动画之后重复相同的动画 6s

    c# - MongoDB:C# 还是 JavaScript?

    javascript - 为什么我对虚拟网站的 XSS 攻击不起作用?

    http - 扭柱长度限制

    google-apps-script - 如何使用应用脚本的DriveApp或Drive Service访问appDataFolder?

    google-apps-script - 列表框上的 GAS 客户端处理程序验证

    javascript - 仅激活某些工作表时触发脚本

    javascript - 如何使用 OpenLayers 3 添加标记

    javascript - jQuery 选择数据属性并隐藏

    javascript - 如何使用 angularjs 发布 JSON 数据