Почему мой скрипт приложений, развернутых как API исполняемый возврат запрещен?

Я создал скрипт в Редакторе скриптов, опубликовал его как "Deploy as API executable". Внутри этого скрипта я предоставил doc_id моему листу и определил функцию для получения данных с этого листа.

затем я пошел в https://developers.google.com/apps-script/execution/rest/v1/scripts/run для тестирования API выполнения. Я добавил области, авторизовал приложение и попробовал его. Я получаю следующее сообщение об ошибке:

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

может кто-нибудь сказать мне, что я что-то не так?

6 ответов


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

скрипт должен быть связан с id проекта консоли разработчика, который соответствует используемому идентификатору клиента OAuth 2.0 (этот проект консоли разработчика также должен иметь "API выполнения скрипта приложений").

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

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


даже с все в порядке, вы можете получить эту ошибку "devMode":true. Благодаря этому я потратил полдня, когда пытался развернуть для других пользователей.

только на будущее.


вам просто нужно добавить пользователя учетной записи службы в качестве редактора в проект

электронная почта от учетной записи службы для добавления выглядит примерно так {project-name}@{project-name}.iam.gserviceaccount.com


Я сделал смесь всех ваших предложений, плюс мне нужно было использовать не "устаревший" идентификатор проекта. Когда я публикую скрипт, он дает мне идентификатор, который я использовал успешно, пока владелец запускает процедуру, и только в Google Chrome (Если я попробую его на Edge, это не удастся). Когда я публикую и пробую его с другим пользователем, он перестает работать. Я открываю скрипт, иду в свойства файла / проекта и копирую более длинный идентификатор скрипта. Тогда программа начнет работать для любого пользователя. В следующем изображение я подчеркиваю красным ключом, который работает только для разработчика, и зеленым ключом, который работает для всех пользователей (они вырезаны в purpouse, и моя среда на испанском языке, поэтому фактические переведенные параметры могут отличаться, извините)

Project properties keys

Я считаю, что стоит составить резюме:

  1. я следую за intructions at'использование API выполнения и quickstarts опубликовать мой скрипт как API выполнения. (Создайте скрипт, включить Google Apps API выполнения скрипта, опубликовать как исполняемый API с доступом для всех)enter image description here
  2. я сделал скрипт видимым для всех, на файл / общий доступ:API sharing settings
  3. я убедился, что devMode не был установлен true на моем вызове. Здесь вызов JavaScript snipet:JavaScript call snippet
  4. я убедился, что все области в проекте были включены во время OAuth запрос: API scopes API OAuth call
  5. я должен подождать несколько минут, чтобы получить все права безопасности, чтобы подготовиться (т. е. учетные данные OAuth)

в основном, это все необходимые шаги, которые мне нужно было выполнить, чтобы запустить сценарий. Надеюсь, это поможет. Наконец, я хотел бы, чтобы вы увидели, что я видел, когда это не удалось и когда это удалось:API call fail API call success

спасибо!


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


У меня была такая же проблема разрешений, и я решил ее, изменив статус моего Google листа на public. Теперь я могу читать данные с помощью метода GET