Google图表打开时使用goo.gl网址缩短程序

时间:2016-05-31 01:54:50

标签: google-sheets google-drive-realtime-api goo.gl

我的目标是自动将Google云端硬盘生成的(超长)分享链接用于短文件中的文档:goo.gl/code

我从Jacob Jan Tunistra here找到了漂亮的剧本,但那篇文章现已关闭。

雅各布的代码就像魅力一样,但你需要运行它。我的需求是在打开文档时自动运行脚本(而不是打开菜单,按下按钮。如何修改该脚本?

function onOpen() {
SpreadsheetApp.getUi()
.createMenu("Shorten")
.addItem("Go !!","rangeShort")
.addToUi()  
}

function rangeShort() {
var range = SpreadsheetApp.getActiveRange(), data = range.getValues();
var output = [];
for(var i = 0, iLen = data.length; i < iLen; i++) {
var url = UrlShortener.Url.insert({longUrl: data[i][0]});
output.push([url.id]);
}
range.offset(0,1).setValues(output);
}

2 个答案:

答案 0 :(得分:2)

simple trigger(例如onOpen)无法使用UrlShortener服务,因为此服务需要授权。相反,您应该使用可安装的触发器。它可以创建如下:

  1. 从脚本编辑器中,转到资源&gt;当前项目的触发器
  2. 使用参数&#34;从电子表格&#34;,&#34;在打开&#34;上创建函数rangeShort的触发器。
  3. 参考:managing installable triggers

答案 1 :(得分:1)

您确定要在打开后自动运行吗? 这意味着您之前生成的所有短链接都将被新的短链接覆盖。 粘贴长URL后,您可能希望自动生成一个短链接。 为此,您的代码应该看起来如下:

function rangeShort() {
var range = SpreadsheetApp.getActiveRange(), data = range.getValues();
var output = [];
for(var i = 0, iLen = data.length; i < iLen; i++) {
var url = UrlShortener.Url.insert({longUrl: data[i][0]});
output.push([url.id]);
}
range.offset(0,1).setValues(output);
}

之后,从脚本编辑器转到参考资料&gt;当前项目的触发器 使用参数“from spreadsheet”,“ on edit ”创建函数rangeShort的触发器。