【问题标题】:Use goo.gl URL shortener when a Google Sheet is open打开 Google 表格时使用 goo.gl URL 缩短器
【发布时间】:2016-05-31 01:54:50
【问题描述】:

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

我从 Jacob Jan Tunistra here 找到了漂亮的脚本,但该帖子现已关闭。

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

【问题讨论】:

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


    【解决方案1】:

    UrlShortener 服务不能被 onOpen 等simple trigger 使用,因为该服务需要授权。相反,您应该使用可安装的触发器。可以这样创建:

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

    参考:managing installable triggers

    【讨论】:

    • 您好,三明治,感谢您的回复。我创建了可安装的触发器,但仍然无法正常工作。也许我也应该修改脚本中的某些内容?我的意思是我需要将触发器应用于所有特定列,但当前脚本可能会等待插入值,对吧?
    【解决方案2】:

    您确定要在打开后自动运行它吗? 这意味着您之前生成的所有短链接都将被新的短链接覆盖。 您可能希望在粘贴长 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 创建触发器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多