Использование гугл таблиц для рассылки email

Собираем адреса эл.почты при помощи чат-бота на конструкторе SaileBot.pro и отправляем коммерческое предложение скриптом из Google Таблицы. Подробно со скриншотами.

Принцип работы: Письмо для рассылки записываем в ячейку D:3 лист «Отправка». Чат-бот собирает новые адреса и записывает их друг за другом в первую колонку таблицы (А3:А лист «Отправка»). Гугл-скрипт срабатывает по времени или при изменении таблицы (зависит от настройки триггера) делает рассылку по новым адресам и переносит их на лист «Лог» с меткой времени.

function SendMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Отправка")
var email = sheet.getRange("a3:a").getValues()
var subj = sheet.getRange("c2").getValue()
var body = sheet.getRange("d2").getValue()
var arr = []
MailApp.sendEmail(email, subj, body)
arr = [[new Date(), email]]
//пишем отправленные адреса в "Лог"
ss.getSheetByName("Лог").getRange(ss.getSheetByName("Лог").getLastRow()+1, 1, 1, 2).setValues(arr)
//очищаем лист "Отправка"
sheet.getRange("a3:a").clearContent()
}

Настройка состоит из четырех частей: настраиваем таблицу, активируем скрипт, настраиваем чат-бота, включаем триггер.

Настройка таблицы:

Делаем копию Таблицы > Файл > Создать копию (Таблица со скриптом).

Отмечаем чекбокс «Скопировать настройки доступа». Жмем Ок.

О таблице: Ваш бот будет писать адреса, водимые вашими клиентами в первую колонку «А3:А». Вам нужно только изменить тексты темы и тела письма, остальное не трогаем.

Проверяем права доступа к таблице: Всем разрешено редактирование. Должно быть, как на скриншотах ниже, иначе бот не сможет записать данные в таблицу.

Активируем скрипт:

В своей таблице — Инструменты — Редактор скриптов

Жмем «Выполнить»

Жмем «Предоставить разрешение»

Выбираем свой аккаунт Gmail, от которого будем отправлять почту.

Жмем «Дополнительные настройки»

Жмем «Перейти на страницу «имя скрипта» (небезопасно)»

Жмем «Разрешить»

Нужно убедиться, что скрипт активирован. Переходим в свою почту, должно прийти сообщение безопасности Google.

Настраиваем чат-бота:

В данном примере рабочая конструкция из трех блоков. Собираем и настраиваем, как на скриншотах.

1) Первый зеленый блок «Первостепенная проверка условия» активирует начало диалога с ботом. Тут пишем первую фразу которая запустит бота > Чтобы настройки сохранялись в блоках, на всех этапах жмем кнопку «Готово».

2) Создаем блок ниже и редактируем соединение: «Пользователь вводит данные» > вводим название переменной (в примере client_mail) > в условии пишем регулярное выражение для проверки email. На данном этапе в боте важно проверять корректность, вводимых пользователем данных, иначе можем получить зависание скрипта. Используйте любое из предложенных регулярных выражений:

^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$

^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$

3) Следующий блок передает данные в таблицу. Настраиваем все, как на скриншоте (описание полей ниже).

Копируем адрес функции в поле URL-запроса:

https://store.salebot.pro/function/gsheets

Выбираем метод POST-json

В поле JSON POST-параметров копируем эту строку:

{"id": "1JnfzafTHzogILW2Y399m3H2XvfucMcwaoBGe-tRYU_o", "mapping":{"a":"#{client_mail}"}, "list_name": "Отправка"}

Параметр "id" меняем на свой, берем из адресной строки своей таблицы:

Настраиваем триггер:

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

Когда убедились, что все работает > Переходим в Таблицу > Инструменты > Редактор скриптов > Жмем значок «Триггеры текущего проекта»

Переходим на страницу Google Apps Script, создаем новый триггер

Настраиваем как на скриншоте. Если настраиваете по времени, то минимальный тайм-фрейм рекомендую ставить 30 мин. Вы можете выбрать любые свои значения, но учитывайте есть ограничение. Жмем > Сохранить.

В списке появиться триггер. Настройка закончена.

Полезные ссылки:

Ограничения Google на отправку электронной почты

Больше информации о Gmail Service

Ограничения Google на запуск скриптов в сутки