【问题标题】:Google Apps Script POST request UrlFetchAppGoogle Apps 脚本 POST 请求 UrlFetchApp
【发布时间】:2015-07-14 10:59:46
【问题描述】:

我正在尝试使用来自 GoogleApps 脚本的 API 将群组和联系人添加到 SendHub 帐户。我可以成功发出 GET 请求并毫无问题地取回 JSON 数据。当我尝试使用 POST 请求添加对象时,我收到了 400、401 和 405 错误,具体取决于我准备数据的方式。

这会得到 400 错误:

  var headers = {
    "Content-type" : "application/json"
  };
  var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : true
  };
  var payload = {
    "data" : Utilities.jsonStringify(data)
  };
  var options = {
    "method" : "post",
    "headers" : headers,
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=USERNAMEWORKSFORGETREQUESTS&api_key=KEYWORKSFORGETREQEUSTS";
  var response = UrlFetchApp.fetch(url, options);

我已经做了几次不同的尝试来改变选项对象的形成方式,结果从 400、401 或 405 错误不等。我对如何为 SendHub API 形成正确的 POST 请求感到困惑,即here

我在这篇文章发布后不久就开始工作了。这是我所做的:

  var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=GOODUSERNAME&api_key=GOODAPIKEY";
  var response = UrlFetchApp.fetch(url, options);

【问题讨论】:

  • 请回答您自己的问题并将其标记为已接受。谢谢!

标签: google-apps-script sendhub


【解决方案1】:

我将答案放在问题的编辑部分。我不确定我所做的三项更改中的哪一项使它起作用,但我留下了确实起作用的示例代码。

 var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=GOODUSERNAME&api_key=GOODAPIKEY";
  var response = UrlFetchApp.fetch(url, options);

【讨论】:

    【解决方案2】:

    您发布的解决方案对我不起作用,这对我有用:

     function example() {
    
       var payload = {
         "api_key" : "SFS1234SDF",
         "list_id" : "4"
       };
    
       var options = {
         "method"  : "post",
         "payload" : payload
       };
    
       var url        = "http://my-url.com";   
       var response   = UrlFetchApp.fetch(url, options);   
    
       Logger.log(response);
    
       return response.getContentText();
    
     }
    

    使用 View -> Log 选项进行调试。

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 2020-08-31
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多