Можно ли назначить кнопке на 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 шт):

Автор решения: oshliaer

Вы можете сделать это через механизм библиотек https://developers.google.com/apps-script/guides/libraries

Главное в этом деле понять, что модульность в облачном пространстве достигается иначе и ожидать безшовного импорта не стоит.

Если ваша кодовая база по-тихоньку превращается в швейцарский нож или фреймворк, то стоит задуматься до версионировании и репозитарном хранении, а код публиковать через API.

→ Ссылка
Автор решения: Antonio

Для того что бы изменить файл манифеста, используйте этот гайд. После вам нужно добавить необходимое разрешение, должно получиться вот так: введите сюда описание изображения

https://www.googleapis.com/auth/spreadsheets
→ Ссылка