有没有办法通过脚本在Google Developers Console中启用高级Google服务?

时间:2015-03-04 12:21:40

标签: google-apps-script google-api google-sheets

又来了!
我创建了一个使用UrlShortener.Url.insert功能的嵌入式电子表格脚本。我的客户希望能够创建此电子表格的新实例以与同事共享。我已经实现了此功能,但当我开始测试新实例时,我发现我必须在Google Developers Console中启用URL Shortener API。
我想知道我是否可以使用我的脚本绕过这个手动工作,或者我只能为客户提供如何操作的说明?

更新: Sandy Good建议使用UrlFetch.fetch()来获取短链接,但是这段代码:

function test_short_link() {
  var options =
     {
       'longUrl': 'http://www.google.com/',
       'muteHttpExceptions': true
     };

   var result = UrlFetchApp.fetch("https://www.googleapis.com/urlshortener/v1/url",
       options);
   Logger.log(result);
}

返回:

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

看起来像topic

这段代码

function test_short_link() {
  var options =
     {
       'longUrl': 'http://www.google.com/',
       'muteHttpExceptions': true,
       'method':'post'

     };
   var result = UrlFetchApp.fetch("https://www.googleapis.com/urlshortener/v1/url",
       options);
   Logger.log(result);
}

带我们:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceededUnreg",
    "message": "User Rate Limit Exceeded. Please sign up",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded. Please sign up"
 }
}

2 个答案:

答案 0 :(得分:4)

编辑:没有办法通过网站旁边的任何方法访问Google Dev控制台。

以下是UrlFetchApp执行此操作的方法。您需要传递payload参数中的选项,而不是UrlFetchApp选项对象中的选项。您还需要在标头中传递当前用户OAuth令牌。当然,您需要修改此代码,因为它对longUrl进行硬编码并且不进行错误检查。

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);

}

答案 1 :(得分:0)

这可以完美地完成。试试这段代码:

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);
}