Google 应用程序脚本 - UrlFetchApp.Fetch 无法 post
Google App Scripts - UrlFetchApp.Fetch unable to post
我正在尝试让 GAS 触发外部 POST 请求 Adverity Datatap 管理 API 以触发获取 (https://help.adverity.com/hc/en-us/articles/360009502839-Datastreams-Triggering-a-Fetch) 但是,我收到的响应表明正在发送 GET 请求而不是 POST 请求。下面的代码中是否有特定的地方似乎不对?
function triggerFetch() {
var myURL = 'https://YOUR_STACK.datatap.adverity.com/api/datastreams/684/fetch'
var options, thisDate, headers, data;
thisDate = Utilities.formatDate(new Date(), "EST-5", "yyyy-MM-dd") + 'T00:00:00Z';
headers = {
'Authorization':'Token XXXXXXXXXXXXXXXXXXXXXXXXXX'
};
data = {
'start':thisDate
,'end':thisDate.replace('T00','T12')
}
options = {
method:'POST'
,muteHttpExceptions: true
,headers:headers
,'Content-Type':'application/json'
,payload:JSON.stringify(data)
}
var response = UrlFetchApp.fetch(myURL,options);
Logger.log(response);
}
编辑:对于额外的上下文,这是 postman
的工作 cURL 输出
curl --location --request POST 'https://YOUR_STACK.datatap.adverity.com/api/datastreams/684/fetch/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token XXXXXXXXXXXXXXXXXXXXXXXXXX' \
--data-raw '{
"start": "2021-02-16T00:00:00Z",
"end": "2021-02-16T12:00:00Z"
}'
您可以尝试使选项包含带有“”(双引号)而不是 ''(单引号)的字符串。它应该是这样的:
options = {
"method" :"POST"
,"muteHttpExceptions": true
,"headers": headers
,"contentType":"application/json"
,"payload":JSON.stringify(data)
}
我能够解决这个问题并发布一个答案以防它与其他人相关。 datatap API 文档指定 URL 应以尾随“/”结尾。如果没有最后一个字符,则会发生重定向,并且 http 方法将重置为 GET 而不是 POST.
我正在尝试让 GAS 触发外部 POST 请求 Adverity Datatap 管理 API 以触发获取 (https://help.adverity.com/hc/en-us/articles/360009502839-Datastreams-Triggering-a-Fetch) 但是,我收到的响应表明正在发送 GET 请求而不是 POST 请求。下面的代码中是否有特定的地方似乎不对?
function triggerFetch() {
var myURL = 'https://YOUR_STACK.datatap.adverity.com/api/datastreams/684/fetch'
var options, thisDate, headers, data;
thisDate = Utilities.formatDate(new Date(), "EST-5", "yyyy-MM-dd") + 'T00:00:00Z';
headers = {
'Authorization':'Token XXXXXXXXXXXXXXXXXXXXXXXXXX'
};
data = {
'start':thisDate
,'end':thisDate.replace('T00','T12')
}
options = {
method:'POST'
,muteHttpExceptions: true
,headers:headers
,'Content-Type':'application/json'
,payload:JSON.stringify(data)
}
var response = UrlFetchApp.fetch(myURL,options);
Logger.log(response);
}
编辑:对于额外的上下文,这是 postman
的工作 cURL 输出curl --location --request POST 'https://YOUR_STACK.datatap.adverity.com/api/datastreams/684/fetch/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token XXXXXXXXXXXXXXXXXXXXXXXXXX' \
--data-raw '{
"start": "2021-02-16T00:00:00Z",
"end": "2021-02-16T12:00:00Z"
}'
您可以尝试使选项包含带有“”(双引号)而不是 ''(单引号)的字符串。它应该是这样的:
options = {
"method" :"POST"
,"muteHttpExceptions": true
,"headers": headers
,"contentType":"application/json"
,"payload":JSON.stringify(data)
}
我能够解决这个问题并发布一个答案以防它与其他人相关。 datatap API 文档指定 URL 应以尾随“/”结尾。如果没有最后一个字符,则会发生重定向,并且 http 方法将重置为 GET 而不是 POST.