почему выполнение скрипта приложений не удавалось, только когда оно запускалось событием onEdit в Google Spreadsheet - PullRequest
0 голосов
/ 29 мая 2020

Я работаю над Google Apps Script. У меня есть сценарий приложений, который я написал, который должен выполняться событием onEdit на определенном c листе.

onEdit.gs

function onEdit(e) {
    var syokuninIchiran = new SyokuninIchiran();
    syokuninIchiran.syncTable();
}

Когда указанное выше выполняется путем редактирования на лист, возникает эта ошибка:

У вас нет разрешения на вызов openById. Требуемые права: https://www.googleapis.com/auth/spreadsheets

Но это работает без проблем, когда скрипт запускается из окна разработки Google Apps Script. Я вызываю тот же код, выполняя тестовую функцию следующим образом:

function test(){
  var syokuninIchiran = new SyokuninIchiran();
  syokuninIchiran.syncTable();
}

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

введите описание изображения здесь

Try1: Я попытался вручную добавить область в файл манифеста (appsscript.json). И я одобрил разрешение. Но ничего не изменилось. По-прежнему отображается то же сообщение об ошибке.

{
  "oauthScopes": [
    "https://www.googleapis.com/auth/sqlservice",
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/script.external_request"
    ]
}

1 Ответ

2 голосов
/ 29 мая 2020

Ответ:

Простые триггеры не могут открывать файлы, кроме файла, к которому они привязаны. Для этого вам необходимо использовать устанавливаемый триггер.

Дополнительная информация:

Согласно документации Ограничения простого триггера :

1013

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

Настройка устанавливаемого триггера:

Следуйте пункту меню Edit > Current project's triggers, который откроет новую страницу в Центр разработчиков G Suite. Нажмите кнопку + Add Trigger в правом нижнем углу и настройте параметры триггера следующим образом:

  • Выберите, какую функцию запускать: onEdit
  • Выберите, какое развертывание должно выполняться: Head
  • Выберите источник события: From Spreadsheet
  • Выберите тип запуска по времени: On Edit

И нажмите «Сохранить». Это расширит диапазон функциональности ваших триггеров редактирования.

Надеюсь, это будет вам полезно!

Ссылки:

...