google-apps-script – 如何正确使用UrlFetchApp.fetch的google url shortner api?

我花了很多时间阅读谷歌手册和其他资源,并且在尝试使用此脚本获取短网址时没有发现我做错了什么:

function test_short_link() {
  var apiKey, post_url, options, result;
  post_url = "https://www.googleapis.com/urlshortener/v1/url";
  apiKey = 'xxx';//here is real apiKey
  post_url += '?key=' + apiKey;
  var options =
     { 'method':'post',
       'headers' : {'Content-Type' : 'application/json'},
       "resource": {"longUrl": "https://google.com/"},
       'muteHttpExceptions': true
     }
   result = UrlFetchApp.fetch(post_url, options);
   Logger.log(result);
}

我做了各种修改,但它返回:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required",
    "locationType": "parameter",
    "location": "resource.longUrl"
   }
  ],
  "code": 400,
  "message": "Required"
 }
}

它让我发疯!
请帮忙!这段代码有什么问题?

最佳答案 您需要修改此代码,因为它对longUrl进行硬编码并且不进行错误检查.一些重要的部分是API选项在UrlFetchApp选项对象的有效负载中发送,并且您需要在标头中传递当前用户OAuth令牌.

function ShortenUrl(){
var url = "https://www.googleapis.com/urlshortener/v1/url"

var payload = {"longUrl":"www.google.com"};

var parameters = { method : 'post',
                    headers : {'Authorization': 'Bearer '+ScriptApp.getOAuthToken()},
                    payload:JSON.stringify(payload),
                    contentType:'application/json',                    
                    muteHttpExceptions:true};

  var response = UrlFetchApp.fetch(url, parameters);
  Logger.log(response);

}
点赞