Рассылка 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.

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

  • Паша

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

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

      • Паша

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

        • Паша

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

      • Паша

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

      • Рустам Султанов

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

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

    • Паша

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

    • Столярчук Богдан

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

    • Сергей

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

  • Паша

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

    • Рустам Султанов

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

  • Василий Koдзасов

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

  • Алексей

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

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

  • Виталий

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

    • Вы выделяете ячейки?