1

我的目标是自动打开谷歌驱动器为他在短网址中的文档生成的(非常)长的共享链接:goo.gl/code

我在这里找到了 Jacob Jan Tunistra 的精美剧本,但该帖子现已关闭。

Jacob 的代码就像一个魅力,但你需要运行它。我的需要是在您打开文档时自动运行脚本(而不是打开菜单并按下按钮。请问我该如何修改该脚本?

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

2 回答 2

2

UrlShortener 服务不能被 onOpen 之类的简单触发器使用,因为该服务需要授权。相反,您应该使用可安装的触发器。它可以按如下方式创建:

  1. 在脚本编辑器中,转到资源 > 当前项目的触发器
  2. 使用“来自电子表格”、“打开时”的参数为函数 rangeShort 创建触发器。

参考:管理可安装触发器

于 2016-05-31T03:43:47.723 回答
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);
}

之后,从脚本编辑器中,转到资源 > 当前项目的触发器为函数 rangeShort 创建一个触发器,参数为“来自电子表格”、“编辑时”。

于 2017-11-07T13:20:24.250 回答