Как разрешить Google Apps Script отправлять email для любого пользователя Spreadsheet?

Для одного Google Spreadsheet сделан скрипт. При изменении некоторых ячеек отправляет email на фиксированные адреса через MailApp.sendEmail()

Документ создан пользователем User-A.

К документу имеют доступ User-A, User-B и User-C. Все с правом вносить изменения.

Скрипт создан пользователем User-B. При настройке им же триггера запуска нужной функции при изменении этого документа был запрос разрешений, предупреждение о непроверенном скрипте и продолжении на свой страх и риск только при доверии разработчику. Ок.
скрины
8cf466d2a2774e10b484b2183354278b.jpgd0077747cac84293997add3271f33a89.jpgff1367abc65b48968de8e47ee63e29af.jpg9260fa8df68f48f2b074875287b7e3e6.jpg601606537314421db52816341bd411d5.jpgf52a3b6fd0074854b618ad2c51bb94c2.jpg

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

При редактировании другими – не отправляется, в консоли видна ошибка
У вас отсутствует разрешение на вызов функции sendEmail (строка 13, файл Код)


Как сделать так, чтобы разрешение дал только один пользователь, и отправлялись письмо от его имени, но срабатывал скрипт с отправкой почты для всех пользователей, имеющих доступ к документу?
  • Вопрос задан
  • 2415 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Описания недостаточно, код не видно, хотя, можно уже предполагать, где скрывается ошибка. Разделите понятия:

Судя по описанию, User-B прошел авторизацию, а остальные пользователи нет. Заставьте этих пользователей пройти авторизацию, и у них появится разрешение на запуск функций.

Как заставить пользователей авторизоваться - это проблема разработчика, а не Google. Но, не имея в техническом плане серьезных противоречий, этот подход сложен для понимания практического. Примеры приложений, код которых может быть одинаков до запятой.
  • Отправить присьмо при изменении. Простой триггер onEdit(). Может отпрвлять только то, кто прошел авторизацию.
  • Отправить присьмо при изменении. Устанавливаемый триггер. Триггер установлен кем-то одним. Может отпрвлять только то, кто прошел авторизацию, т.е. один. Письма будут приходить согласно условию в коде.
  • Отправить присьмо при изменении. Устанавливаемый триггер. Триггер установлен каждым умником, кто залез в код. Может отпрвлять только тот, кто прошел авторизацию. Письма будут приходить согласно условию в коде умноженное на количество умников, потому что это будет один и тот же код, срабатываемый для каждого триггера в каждом аккаунте.

Разрабатывая клиент-серверное приложение, вам необходимо заботиться о многопользовательском доступе. Необходимо разработать процесс и порядок доступа, и только после этого разбираться, как это реализовать. Например,
  • Каждый пользователь сам себе будет отправлять письма? Зачем и нах!?
  • Каждый пользователь будет отправлять письма на заданный адрес?
  • Письма будет отправлять только один аккаунт всем участникам подписки, группе, редакторам и т.д.?
  • Письма будет отправлять только один аккаунт, тому кто совершил изменения? Для аккаунтов googlemail.com это недоступно.

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

Пересмотрите свое приложение. Какие цели оно преследует? Чего вы уже добились? Так ли это работает? Приведите пример кода и суть приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы