Google App Script 静静地无法 POST,Curl 有效

Google App Script Silently fails to POST, Curl Works

Curl 正在 posting 但 GoogleAppScript 没有相同的凭据。

我正在尝试将 google 应用程序脚本 post 当前文档作为 html 新 Jive 文档的内容

// 下面的 curl 命令完美运行

curl -u USERNAMEHERE:PASSWORDHERE -H "Content-Type: application/json" --data '{ "type": "document", "content": { "type": "text/html", "text":"<h1>HOORAY</h1> a Document is born"}, "subject": "TEST WORKED"}' https://MYJIVEURL.com/api/core/v3/places/XXXXXXXX/contents

// Apps 脚本现在抛出 401 错误

function pleaseWork() {
  var encode = Utilities.base64Encode('USER:PASS', Utilities.Charset.UTF_8);
  var docbody = DocumentApp.getActiveDocument().getBody();
  var subject = DocumentApp.getActiveDocument().getName();
  var url = "https://JIVEURL/api/core/v3/places/XXXXXX/contents";

  var option = {
    authorization: "Basic " + encode,
    contentType: "application/json",
    method: 'post',
    payload: JSON.stringify({
      subject: subject,
      type: "document",
      content: {
        type: 'text/html',
        text: docbody
      },
    })
  }

  var response = UrlFetchApp.fetch(url, option).getContentText()

}```




Theres no other errors to speak of in the AppScript editor. So I must be leaving something out. I just don't know what that is

第 1 部分 - payload

params 对象有一个名为 "payload" 的参数,它应该包含您要作为字符串化 JSON 发送的数据。因此,不是直接引用 contentsubjecttype,您应该执行以下操作(顺便说一句,UrlFEtchApp 的内容类型可以通过 contentType参数和method通过相应的参数):

var option = {
  //other parameters here;
  method : 'post',
  contentType : 'application/json',
  payload : JSON.stringify( {
  content : '',
  subject : '',
  type    : ''
  } )
}

第 2 部分 - headers

虽然这看起来很武断,但并非所有 参数都应移至params 对象的top-level 属性。可以通过这种方式设置一组封闭的属性(请参阅参考资料)。授权仍应设置为 header,因此:

var option = {
  //other parameters here;
  headers : {
    Authorization : 'Basic ' + yourAuth
  },
  method : 'post',
  contentType : 'application/json',
  payload : JSON.stringify( {
    content : '',
    subject : '',
    type    : ''
  } )
}

有用链接

  1. UrlFetchApp.fetch() reference;