【问题标题】:Problems using the goo.gl API from google apps script使用谷歌应用脚​​本中的 goo.gl API 的问题
【发布时间】:2011-07-04 00:31:00
【问题描述】:

我正在尝试从 Google Apps 脚本中查询 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');
}

【问题讨论】:

    标签: google-apps google-apps-script goo.gl


    【解决方案1】:

    The documentation 表示 contentType 默认为 'application/x-www-form-urlencoded'

    也许尝试使用contentType 参数设置Content-Type,而不是手动插入Content-Type 标头?

    【讨论】:

    • 谢谢,这正是我所需要的。我没有看到 contentType 参数。并尝试使用 HTTP 标头参数自行设置。
    • 这为我解决了问题。我使用的库希望我手动 JSON.stringify 我的请求正文。这为我指明了正确的方向。谢谢!
    【解决方案2】:

    以下代码完美运行。

    function ShortenUrl(){
    var url = 'https://www.googleapis.com/urlshortener/v1/url';
    var apiKey = 'AIzBlNS-3HZdxKgwj-x30';
    url += '?key=' + apiKey;
    var payload = {"longUrl":"www.google.com"};
    
    var parameters = { method : 'post',
                    payload:JSON.stringify(payload),
                    contentType:'application/json',                    
                    muteHttpExceptions:true};
    
    var response = UrlFetchApp.fetch(url, parameters);
    Logger.log(response);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多