Использование ContactsApp из таблицы Google
Обзор: когда я вызываю ContactsApp.getContact() в функции GoogleAppsScript, эта функция прекрасно работает при запуске из редактора сценариев. Однако, когда я пытаюсь использовать свою функцию из таблицы Google, я получаю ошибку разрешения. Как я могу устранить эту ошибку разрешения и использовать ContactsApp из пользовательской функции в электронной таблице?
Подробности: я создаю новую электронную таблицу, открываю редактор сценариев и определяю следующую простую функцию:
function example() {
ContactsApp.getContacts();
return 5;
}
При первом запуске из редактора сценариев мне предлагается подтвердить доступ к моим контактам. Я даю одобрение, и функция работает нормально. Я могу добавить ведение журнала и убедиться, что он работает как положено.
Теперь вернувшись в электронную таблицу, я использую формулу '=example()' в ячейке, ожидая, что она установит значение ячейки равным 5. Вместо этого ячейка говорит "#ERROR!" и наведение мыши на ячейку показывает подробную ошибку:
You do not have permission to call ContactsApp.getContacts. Required permissions: https://www.google.com/m8/feeds (line 2)
Глядя на свойства проекта скрипта, я вижу, что https://www.google.com/m8/feeds
действительно указан в качестве обязательного объема.
Как я могу устранить эту ошибку разрешения и использовать ContactsApp из пользовательской функции в электронной таблице?
1 ответ
Я нашел ответ в документации здесь: https://developers.google.com/apps-script/guides/sheets/functions
Unlike most other types of Apps Scripts, custom functions never ask users to authorize access to personal data. Consequently, they can only call services that do not have access to personal data, specifically the following:
Cache
HTML
JDBC
Language
Lock
Maps
Properties
Spreadsheet
URL Fetch
Utilities
XML
Таким образом, использование ContactsApp в пользовательской функции в качестве желаемого вопроса в настоящее время не разрешено, поскольку потребуется авторизация, а пользовательские функции не позволяют этого.