Вызов веб-приложения Google script из учетной записи службы

#google-apps-script #service-accounts

Вопрос:

У меня есть базовая doGet функция, взятая из документации Google:

 function doGet(e) {
  var params = JSON.stringify(e);
  return HtmlService.createHtmlOutput(params);
}
 

Я развернул его как отдельное веб-приложение, дал ему разрешения на доступ для любого сотрудника организации и сумел успешно вызвать его из браузера, используя URL-адрес, например:
https://script.google.com/a/macros/**/s/some-guid/exec?a=b :

 {"parameters":{"a":["b"]},"contextPath":"","contentLength":-1,"queryString":"a=b","parameter":{"a":"b"}}
 

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

     creds, project = google.auth.default()
    auth_req = google.auth.transport.requests.Request()
    creds.refresh(auth_req)
    print(creds.valid)  # prints True

    headers = {'content-type': 'application/json', 'Authorization': 'Bearer '   creds.token}

    response = requests.get("THE_ABOVE_URL" , headers=headers)
    print(response)  # prints `401`
 

Что я делаю не так?

Комментарии:

1. Вы указали параметры при программном вызове?

2. Также: развернул ли oyu веб-приложение, запущенное вами или пользователем, получившим доступ к веб-приложению?

3. Я развернул веб-приложение, работающее так же, как и я сам.

4. В этом случае вам необходимо развернуть его как «Кто может получить доступ»: «Любой, даже анонимный» и — что очень важно: приложение, из которого вы звоните в веб-приложение, должно иметь область действия диска.

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