我試圖從Google Apps腳本中查詢goo.gl API。我看到的問題是以下錯誤消息:從谷歌應用程序腳本中使用goo.gl API的問題
Request failed for https://www.googleapis.com/urlshortener/v1/url?key=AIXXXXXXXXXXXXXXXXXXXXXLmGJQw returned code 400. Server response: { "error": { "errors": [ { "domain": "global", "reason": "parseError", "message": "This API does not support parsing form-encoded input." } ], "code": 400, "message": "This API does not support parsing form-encoded input." } } (line 28)
消息出現時,我嘗試在UrlFetchApp.fetch(post_url, options);
做實際的請求。
下面是我在Google Apps腳本中使用的實際編碼。
function minifyGoogl(longUrl) {
var post_url = 'https://www.googleapis.com/urlshortener/v1/url';
var apiKey = UserProperties.getProperty('googl_api_key');
if(!apiKey){
var apiKey = ScriptProperties.getProperty('googl_api_key');
}
if(apiKey){
post_url += '?key=' + apiKey;
}
var payload = Utilities.jsonStringify({'longUrl': longUrl });
var options = {
'method' : 'post',
'headers' : {
'Content-Type' : 'application/json'
},
'payload' : payload
};
try{
var response = UrlFetchApp.fetch(post_url, options);
}catch(e){
if(e.message){
throw e.message;
}
}
var responseJson = response.getAs('json');
}
function testMinifyGoogl(){
minifyGoogl('http://eduardo.cereto.net');
}
謝謝,這正是我所需要的。我沒有看到'contentType'參數。並嘗試使用HTTP頭參數自己設置它。 – Eduardo
爲我修好了。我使用的庫要求我手動JSON.stringify我的請求正文。這使我指出了正確的方向。謝謝! – frosty