Пользовательская функция в встроенном сценарии работает только при запуске из сценария, но не из исходного листа (GAS) - PullRequest
0 голосов
/ 08 ноября 2019

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

Когда я вызываю функцию в самом листе, она выглядит так:

Call the function from the sheet

К сожалению, я получаю сообщение об ошибке, в котором говорится, что у меня нет разрешения на вызов функции 'insertSheet ()', хотя я уже дал ей разрешения. Кроме того, при запуске той же функции из редактора сценариев она работает нормально, и добавляется новый лист.

Permissions error

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

Есть идеи о том, что мне не хватает? Пожалуйста, помогите:)

1 Ответ

0 голосов
/ 08 ноября 2019

Извините, но то, что вы пытаетесь сделать, невозможно, так как документы говорят:

Электронная таблица только для чтения (может использовать большинство get * ()методы, но не набор * ()). Не удается открыть другие электронные таблицы (SpreadsheetApp.openById () или SpreadsheetApp.openByUrl ()).

Если ваша пользовательская функция выдает сообщение об ошибке. У вас нет разрешения на вызов службы X. Служба требует авторизации пользователя и, таким образом,не может использоваться в пользовательской функции.

Когда вы используете пользовательскую функцию, электронная таблица вызывает функцию, поэтому даже если вы предоставили разрешения, эти разрешения были для вас, а не для электронной таблицы. Это проблема, которую вы имеете.

Вы можете использовать Пользовательские меню в G Suite . Это позволит вам иметь меню или кнопку, созданную вами в электронной таблице, которая может вызывать функцию в вашем коде скрипта Apps.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...