我已经尝试了一切,并且google不会回答我的特定问题,所以去了。
我想将以下代码转换为Apps Script语法,下面的代码照常工作。
var request = new XMLHttpRequest();
request.open('POST', 'https://.......');
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/json');
request.setRequestHeader('X-Token', 'myTokenHere');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);
}
};
var body = {
'fromDate': '2019-01-01T13:54:51+0200',
'toDate': '2019-05-01T13:54:51+0200'
};
request.send(JSON.stringify(body));
例如,我尝试过的是: (我得到的只是一个500错误)
function req(){
var url = "https://.......";
var options = {
"method": "post",
"muteHttpExceptions": true,
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Token": "myTokenHere"
},
"payload": {
"fromDate": "2019-01-01T13:54:51+0200",
"toDate": "2019-05-01T13:54:51+0200"
}
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
谢谢!
和平=)
答案 0 :(得分:0)
您有两个问题。
首先,如注释中所述,有效负载不是JSON字符串。您的内容类型为application/json
,因此需要对有效负载进行格式化以匹配该模仿类型。
使用JSON.stringify()
方法(Apps脚本支持该方法)以实现以下目的:
....
"payload":JSON.Stringify({
"fromDate": "2019-01-01T13:54:51+0200",
"toDate": "2019-05-01T13:54:51+0200"
}),
....
您的第二个问题是设置contentType
标头。这有点违反约定,但是您可以像这样将内容类型设置为options
对象( NOT 标头对象)的属性:
var options = {
...
"contentType":"application/json",
"headers":{
"Accept": "application/json",
"X-Token": "myTokenHere"
},
...
}