Рассылка email из таблиц Google одним кликом

По работе понадобилось рассылать сотрудникам письма исходя из данных таблицы. Как это произвести в один клик, хоть массово, хоть адресно? С помощью скрипта Google по такой схеме:

  1. Имеем таблицу с email-адресами и данными для отправки.
  2. Создаём скрипт Google, рассылающий письма на адреса из выделенных ячеек.
  3. Ставим в документ кнопку, при нажатии на которую этот скрипт срабатывает.

Рассмотрим более подробно по пунктам.

  1. Формируем таблицу

Всё что нам нужно, это адреса и данные:

Screenshot_1

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

  1. Создание скрипта

Инструменты → Редактор скриптов.

Screenshot_2

Выделяем всё, удаляем всё, копируем на пустой лист этот код:

function sendSelectedEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var activeRange = sheet.getActiveRange();
var data = activeRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0];
var subject = row[1];
var message = row[2];
MailApp.sendEmail(emailAddress, subject, message);
}
}

То же самое на скриншоте:

Screenshot_3

Сохраняем. Имена скрипта и проекта значения не имеют.

Что делает скрипт: построчно берёт данные из выделенных ячеек и рассылает почту. В нашем случае он берёт адрес emailAddress, тему subject и сообщение message. Элементы массива row — это номера ячеек в строке слева направо, начиная от 0.

Насчёт обещанных данных в скрипте. При необходимости объединить строки (например, для добавления постоянного адреса, на который копируются письма) используем конкатенацию с помощью плюса:

var emailAddress = row[0] + ', admin@site.my';

Конечно, используемых ячеек может быть больше, они могут другое положение относительно друг друга. Поэтому просто меняем под свои нужды цифры в row[…].

В принципе, на этом всё: можно запускать скрипт, предварительно выделив строку или несколько строк в файле с данными. А можно сделать кнопку, чтобы лишний раз не открывать редактор скриптов.

  1. Кнопка «Отправить email»

Кнопка создаётся как рисунок, на который позже назначается скрипт.

Вставка → Рисунок → Рисуем нужный нам объект (например, прямоугольник со скруглёнными краями), при необходимости делаем надпись:

Screenshot_4

Жмём «Сохранить и закрыть». Теперь через выпадающее меню рисунка назначаем ему скрипт:

Screenshot_5

А если точнее, то основную функцию из нашего скрипта:

Screenshot_6

Сохраняем. Вот теперь действительно всё. Можно выделить одну или несколько строк и щёлкнуть по кнопке. В первый раз Google запросит разрешения для скрипта на отправку email.

По материалам раз и два.

26 thoughts on “Рассылка email из таблиц Google одним кликом”

  1. Спасибо!!! Очень полезная статья… Я с помощью этого отправляю СМС через специальный сервис…
    Только есть одна проблема… Что-то не так с русским текстом. Если отправлять мой подготовленный текст через обычный интерфейс Gmail то все нормально, а если через ГуглТаблицы, то текст где-то теряется…
    Я думаю, что может в кодировке проблема? Кодировку отправляемого сообщения можно как-то установить?

    1. У меня не было проблем с кодировкой, но я и не отправлял через SMS, только по почте.
      Если же проблема наблюдается в почте, то, наверное, стоит покопаться в настройках почтового клиента. Думаю, что в Таблицах Google по умолчанию используется Unicode. Логично будет попробовать поставить в почтовике такую же кодировку.

    2. У почтовике менял… Видимо это не взаимосвязано

    3. Рассылка email из таблиц Google одним кликом — ЭТО круто!!!!

    4. А если через почтовик отправлять сообщение с таким же текстом, то все хорошо… В общем благодарен за новость))

    5. У меня вопрос — как сделать так, чтобы через этот скрипт можно было в том числе отправлять изображения, находящиеся в ячейке? пробовал использовать функцию IMAGE, но приходит только пустое письмо, без изображения. Как решить этот вопрос?

    6. Если честно, без понятия. Не возникало необходимости отправлять картинки. Но если решите проблему, буду благодарен, если поделитесь.

    7. Еще бы как-то кнопку закрепить… А то она уходит вверх вместе со скроллингом страницы… А в закрепляемую область строк она не хочет вставляться((

    8. Я столкнулся с той же проблемой, но не нашёл её решения. Если у Вас получится, сообщите, пожалуйста.

    9. Павел,а подскажите через какой сервис делаете смс рассылку? И как его интегрировать в этот скрипт?

    10. Павел, подскажите, как прописать скрипт для отправки смс

  2. Еще бы как-то кнопку закрепить… А то она уходит вверх вместе со скроллингом страницы… А в закрепляемую область строк она не хочет вставляться(

    1. Я поставил кнопку в первую строку, немного расширив её. И после просто эту строку закрепил (Выделяешь строку — Вид — Закрепить — 1 строку). Теперь, куда не спускайся, 1-я строка с кнопкой всегда следует за тобой

  3. А можно отправить содержимое не одной ячейки, а нескольких ячеек в виде таблицы или вложенного файла?

  4. На сколько адресов с 1 аккаунта можно отправлять письма?
    Получил такую ошибку: Служба была вызвана слишком много раз за день: email.
    Или это ошибка вызвана, из-за другого случая?

    1. Очевидно, что:
      а) ничего не бывает совсем бесплатно и без ограничений;
      б) Гугл не любит спамеров.
      Соответственно, нужно знать меру ;) Чтобы не выйти за квоту или вообще не быть забаненным. А какова она, эта квота — можно почитать в какой-нибудь документации Google, я не в курсе ограничений.

  5. Не работает! Выдает ошибку на 10 строке «…….не указан получатель»
    Что делаю не так??

  6. Добрый день! Очень крутой функционал. Спасибо Вам большое. А возможно ли автоматическое отправление письма, а не по клику. Например с сайта попадают заявки в таблицу. А скрипт автоматически отправляет письмо на новую заявку. Спасибо!

    1. Не проверял, но, судя по всему, можно. Воспользуйтесь функцией onEdit в скриптах и аналогичным триггером.

    2. Спасибо большое. Всё сделал. Заработало.

    3. Дмитрий, поделитесь пожалуйста кодом триггера, у меня та же задача, бьюсь над ней уже второй вечер. Буду признателен если вышлите на почту — pavlistov@gmail.com, или разместите здесь

    4. Вы не могли бы прописать код триггера для автоматического отпавления, у меня та же задача, бьюсь над ней уже второй вечер. Буду признателен если вышлите на почту — pavlistov@gmail.com, или разместите здесь

    5. Добрый день! Я, скорее, о том, что нужно использовать триггер «On edit» в редакторе скриптов (см. скриншот по ссылке под этим сообщением). А функцию onEdit, которая работат по данному триггеру, нужно писать специально под задачу / таблицу.

      http://storage8.static.itmages.com/i/18/0106/h_1515256913_2730777_97460cb9f5.png

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *