Используйте сокращатель URL goo.gl, когда открыт Google Лист

Моя цель состоит в том, чтобы автоматически включить (очень) длинные ссылки, созданные с помощью Google, для его документов по короткому URL: goo.gl/code

Я нашел красивый сценарий от Джейкоба Яна Тунистра здесь, но этот пост сейчас закрыт.

Код Джейкоба работает как брелок, но вам нужно его запустить. Мне нужно запустить скрипт автоматически при открытии документа (а не открывать меню и нажать кнопку. Как я могу изменить этот скрипт, пожалуйста?

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 ответа

Служба UrlShortener не может использоваться простым триггером, таким как onOpen, поскольку для этой службы требуется авторизация. Вместо этого вы должны использовать устанавливаемый триггер. Это может быть создано следующим образом:

  1. Из редактора сценариев перейдите в Ресурсы> Триггеры текущего проекта
  2. Создайте триггер для функции 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 с параметрами "из электронной таблицы", "при редактировании".

Другие вопросы по тегам