Можно ли назначить кнопке на Google Sheet скрипт из внешнего файла?
В книге Spreadsheet можно назначить макрос, сохраненный в этой книге, на кнопку на листе. Можно ли назначить кнопке макрос с внешнего скрипт-файла на гугл диске?
Я начинающий в этом деле и не могу разобраться, в чем проблема. Создал новую папку на гугл-диске, в ней новая гугл-таблица и файл скрипта.
В файле скрипта создал макрос:
function testScript() {
const ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1UEbYIW3Bxqx44YmUyu59MGQr3H4dGo7LUiaMoppaDbI/edit?usp=sharing');
let a = ss.getRange('A1').getValue()
Logger.log(a + ' Button1 is pressed.')
}
Он запросил разрешения для доступа и работает.
в файле книги импортировал его как библиотеку и создал макрос для ее вызова:
/** @OnlyCurrentDoc */
function press_button1() {
standaloneScript.testScript()
};
При его выполнении возникает ошибка Exception: You do not have permission to call SpreadsheetApp.openByUrl. Required permissions: https://www.googleapis.com/auth/spreadsheets testScript @ Код.gs:2
Почему?
Ответы (2 шт):
Вы можете сделать это через механизм библиотек https://developers.google.com/apps-script/guides/libraries
Главное в этом деле понять, что модульность в облачном пространстве достигается иначе и ожидать безшовного импорта не стоит.
Если ваша кодовая база по-тихоньку превращается в швейцарский нож или фреймворк, то стоит задуматься до версионировании и репозитарном хранении, а код публиковать через API.
Для того что бы изменить файл манифеста, используйте этот гайд. После вам нужно добавить необходимое разрешение, должно получиться вот так:
https://www.googleapis.com/auth/spreadsheets