Скрипт Google App молча завершается POST, Curl Works - PullRequest
1 голос
/ 25 июня 2019

Curl публикует, но Google AppScript не с теми же учетными данными.

Я пытаюсь получить скрипт приложения Google для публикации текущего документа в виде 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

// Сценарий приложения теперь выдает 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 Ответ

0 голосов
/ 25 июня 2019

Часть 1 - payload

params объект имеет параметр под названием «полезная нагрузка», который должен содержать данные, которые вы собираетесь отправить в виде строкового JSON. Таким образом, вместо прямой ссылки на content, subject и type, вы должны сделать следующее (кстати, тип контента для UrlFEtchApp может быть установлен через параметр contentType, а method - через соответствующий параметр):

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

Часть 2 - headers

Хотя это может показаться произвольным, не все параметров должны быть перемещены в свойства верхнего уровня объекта params. Существует закрытый набор свойств, которые можно установить таким образом (см. Ссылку). Авторизация все еще должна быть установлена ​​как header, таким образом:

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

Полезные ссылки

  1. UrlFetchApp.fetch() ссылка ;
...