UrlFetchApp.fetch в электронной таблице ошибок OnSubmit с «Не иметь разрешения» несмотря на манифест - PullRequest
0 голосов
/ 27 января 2020

Как можно получать внешний URL-адрес при каждой отправке формы?


Мне нужно архивировать URL-адрес, отправленный с помощью форм Google.

I создал скрипт приложения для электронной таблицы Google, связанный с моей формой:

function onSubmit(e) {
  var url="https://web.archive.org/save/http://www.google.com"
  var response = UrlFetchApp.fetch(url, headers);
}

Я также отредактировал манифест, включив в него разрешение на использование UrlFetchApp.fetch:

{
  "timeZone": "Europe/(redacted)",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request"]
}

Однако я продолжаю получать следующее сообщение об ошибке:

У вас нет разрешения на вызов UrlFetchApp.fetch. Требуемые разрешения: https://www.googleapis.com/auth/script.external_request

1 Ответ

1 голос
/ 28 января 2020

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

Также помните, что onSubmit - это не простой триггер , что означает, что вы должны установить его раньше. Простой триггер подвержен различным ограничениям , одним из которых является:

Они не могут получить доступ к службам, требующим авторизации.

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

Примером для onFormSubmit может быть что-то вроде этого:

function createTrigger(){
  var sheet = SpreadsheetApp.openById("<your-sheet-id>");
  ScriptApp.newTrigger('onSubmit')
           .forSpreadsheet(sheet)
           .onFormSubmit()
           .create();
}

В этом случае onSubmit - это имя вызываемой функции. когда триггер выполнен (ваша функция).

Выполните это createTrigger и примите разрешения.

Теперь все должно работать нормально и выполняться каждый раз с соответствующими разрешениями.

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