Можно ли вызывать API-интерфейс Google Apps Script с помощью учетной записи службы?

Я хотел бы использовать учетную запись службы для доступа к Листу Google через приложение Script Execution API, но из документации не ясно, поддерживается ли это.

Шаги, которые я пробовал (которые приводят к статусу 403 из API выполнения):

  • Создайте новые (несвязанные) приложения Script
  • Посетите связанный проект консоли разработчика
  • Включить API выполнения
  • Создайте новую учетную запись службы в рамках одного проекта (загрузка сгенерированный файл JSON)
  • Создайте новый лист Google и поделитесь им с учетной записью службы адрес электронной почты (это шаг, который я наименее уверен в)
  • Записать приложение Script, которое читается из электронной таблицы
  • Запустите Script вручную из редактора Script (чтобы установить области действия на Script правильно)
  • Опубликуйте Script ( "Развертывание как исполняемый файл API" ), сделав его доступным для "кого"
  • Отметьте новый токен OAuth2, используя учетную запись службы и области действия связанный с Script (в нашем случае просто 'https://www.googleapis.com/auth/spreadsheets')
  • Попытка совершить вызов API выполнения с использованием токена

Это ответ, который я получил:

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

Не работает ли это, потому что учетные записи службы никогда не могут получить доступ к API выполнения? Или что-то не так с вышеуказанными шагами?

Ответ 1

Исходная ошибка 403 указывает, что вы неправильно настроили аутентификацию для своей учетной записи службы. Однако, даже если вы получите эту работу, на данный момент (10 ноября 2015 г.) вы не можете выполнять скрипты приложений через учетную запись службы.

Это известная ошибка и отслеживается в скриптах приложений Отслеживание ошибок.

Ответ 2

Вероятно, проблема заключается в том, что script связан с неправильным проектом (т.е. собственным проектом, а не проектом, связанным с вашей учетной записью службы). Вот что вам нужно сделать:

В редакторе сценариев выберите следующий пункт меню: Ресурсы > Проект консоли разработчика.

На этом экране введите номер проекта для вашей консоли разработчика.

cf этот ответ