我的目标是自动将Google云端硬盘为他的文档生成的(非常)长的共享链接转换为短网址:goo.gl/code
我在这里找到了雅各布·扬·图尼斯特拉(Jacob Jan Tunistra)的漂亮剧本,但该帖子现已关闭。
Jacob 的代码就像一个魅力,但你需要运行它。我的需求是在打开文档时自动运行脚本(而不是打开菜单 e 按下按钮。请问我该如何修改该脚本?
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);
}
UrlShortener 服务不能由简单的触发器(如 onOpen)使用,因为此服务需要授权。相反,您应该使用可安装的触发器。可以按如下方式创建它:
- 在脚本编辑器中,转到当前项目触发器> 资源
- 为函数 rangeShort 创建一个触发器,参数"来自电子表格"、"打开时"。
参考:管理可安装的触发器。
您确定要在打开它后自动运行它吗?这意味着您之前生成的所有短链接将被新链接覆盖。您可能希望在粘贴长 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 创建一个触发器,其中包含参数"来自电子表格"、"编辑时"。