И получать максимальный отклик.
Как делать не надо
Вот канонический пример некачественной автоматизированной рассылки:
У этого письма есть некоторые недостатки, которые воспринимаются как проявление неуважения:
- Грубое обращение к человеку в теме письма (эту странную фишку применяют многие спамеры);
- В поле «Отправитель» указан адрес, не принадлежащий конкретной личности;
- Письмо пришло в полтретьего ночи;
- Обращение в начале письма не соответствует этике делового общения;
- Текст не отформатирован;
- Много неуместного выделения слов большими буквами;
- Информация об отправителе дается в самом конце письма;
- Отправители явно не читали текст рассылки.
На такое предложение нет желания отвечать. Если бы письмо было составлено аккуратнее, то я бы из вежливости написала несколько слов о том, что мне это не интересно и консультант могла вывести меня на диалог и, возможно, уговорить на сотрудничество. Но после такого сообщения, я постараюсь обходить эту «Международную редакцию» стороной.
Как сделать лучше
Чтобы получать ответы на свои рассылки следует придерживаться правила:
Получатель должен быть уверен, что письмо составлено персонально для него
Мало кто любит отвечать на автоматические письма. Но лишь у самого невежливого или загруженного почтой человека совесть позволит не черкнуть хотя бы пару строк на сообщение адресованное лично ему.
Из вышеприведенного правила вытекают рекомендации:
- Письмо желательно отправлять от имени конкретного человека;
- У письма не должно быть несколько десятков получателей (так происходит, когда рассылки делают через копию);
- Лучше, когда тема письма четко отражает его суть;
- В начале письма желательно поздороваться;
- К человеку лучше обратиться по имени, указав на его половую принадлежность. Пример: «Уважаемый Михаил!»;
- Если пишете в первый раз, то в начале письма неплохо бы представиться;
- Отправлять письмо желательно в рабочее время;
- В конце письма можно еще раз обратиться по имени и намекнуть о своем ожидании ответа на письмо;
- В письмо лучше не вставлять ссылку на файл, а прикрепить его в виде вложения.
Эти рекомендации не являются аксиомами делового этикета. Это просто пожелания, основанные на собственном опыте получения тысяч автоматически сгенерированных писем с пресс-релизами, приглашениями, анкетами и предложениями услуг.
Рассылки на GAS
А теперь, перейдем к самой интересной части статьи. Научимся делать автоматизированные рассылки с помощью Google Apps Script, видоизмененной версии JavaScript. Этот язык предназначен для автоматизации работы с сервисами Google.
Об использовании Google Apps Script уже вышло несколько статей на iPhones. Рекомендую ознакомиться с ними для более глубокого понимания темы.
- 4 лайфхака Gmail и Google Apps Script
- Автоматизируем Google Таблицы на Google Apps Script
- Google Apps Script для Docs в примерах
- Простые автоматизации для Google Drive
- Планируем жизнь с Google Calendar и Google Apps Script
- Открываем doc.google.com и создаем новую электронную таблицу;
- В первый столбец забиваем получателей, а во второй их адреса;
- Открываем Инструменты -> Редактор скриптов;
- Вбиваем туда следующий код, не забыв указать нужное число получателей:
[jscript]
function sendMails() {
// 5 надо заменить на число адресатов в таблице
var rowsAmount = 5;
// Здесь надо указать тему писем
var messageSubject = "Пресс-релиз";
// Создаем переменную для активного листа
var currentSheet = SpreadsheetApp.getActiveSheet();
// Выделяем диапазон данных и получаем из него данные
var dataRange = currentSheet.getRange(1, 1, rowsAmount, 2);
var data = dataRange.getValues();
// Обходим поочередно ряды в таблице
for (i in data) {
var row = data[i];
// Из первого столбца берем адрес
var emailAddress = row[0];
// А из второго имя получателя
var messageText = row[1] + ", " + "высылаем Вам пресс-релиз";
MailApp.sendEmail(emailAddress, messageSubject, messageText);
}
}
[/jscript] - Нажимаем на кнопку Запустить и даем скрипту все разрешения, которые он попросит.
- В третьем столбце обозначить пол абонента: «мужской» или «женский».
- Немного видоизменить вышеприведенный код:
[jscript]
function sendMails() {
// 5 надо заменить на число адресатов в таблице
var rowsAmount = 5;
// Здесь надо указать тему писем
var messageSubject = "Пресс-релиз";
// Создаем переменную для активного листа
var currentSheet = SpreadsheetApp.getActiveSheet();
// Выделяем диапазон данных и получаем из него данные
var dataRange = currentSheet.getRange(1, 1, rowsAmount, 3);
var data = dataRange.getValues();
// Обходим поочередно ряды в таблице
for (i in data) {
var row = data[i];
// Из первого столбца берем адрес
var emailAddress = row[0];
// Формируем текст обращения
if(row[2]=="женский")
{
var appeal = "Уважаемая";
}
else if(row[2]=="мужской")
{
var appeal = "Уважаемый";
}
// Перенос строки обозначается символом \n
var appealText = appeal + " " + row[1] +"!\n";
var messageText = appealText + "Высылаем Вам пресс-релиз";
MailApp.sendEmail(emailAddress, messageSubject, messageText);
}
}
[/jscript] - Открываем редактор скриптов;
- Вставляем в него код двух функций:
[jscript]
// Функция для создания меню
function createMenu() {
var currentSheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [
{
name : "Рассылка",
functionName : "sendEmails" }];
currentSheet.addMenu("Мои скрипты", entries);
}
// Ставим триггер для отображения меню при открытии документа
function onOpen() {
createMenu();
}
[/jscript] - Обновляем таблицу в браузере.
Сделать автоматическую рассылку в Gmail очень просто:
Это был базовый пример кода, на основе которого можно сделать рассылку любой сложности. Разберем несколько приемов по его доработке.
Добавляем обращение
Традиционно, первую строку в письме занимает обращение: «Уважаемый Михаил!» или «Уважаемая Анастасия». Чтобы добавить обращение к автоматическому письму надо сделать следующие:
Форматируем текст письма
В примере плохой рассылки, приведенном в начале статьи «важные» слова выделены CAPS-ом. На мой вкус, это не добавляет позитивных эмоций получателю. Если есть необходимость выделить что-то в тексте письма, то лучше выделить это курсивом или жирным шрифтом. Сделать это можно с помощью языка разметки HTML. Этот код нужно поставить после объявления переменной appealText:
[jscript]
var messageText = appealText + "Высылаем Вам пресс-релиз";
var messageHTML = appealText + "Высылаем <i>Вам</i> <b>пресс-релиз</b>";
MailApp.sendEmail(emailAddress, messageSubject,messageText, {"htmlBody":messageHTML});
[/jscript]
Две переменные с текcтом письма указываются у метода sendEmail на случай, если почтовые клиенты получателей не поддерживают HTML.
Редактируем данные отправителя
В Google Apps Script есть возможность для письма указать имя отправителя и адрес, на который надо отправлять ответ на письмо. Можно сделать рассылку с ящика на Gmail, а ответы принимать на корпоративную почту. Вот код с примером указания имени отправителя и адреса для ответа:
[jscript]
MailApp.sendEmail(emailAddress, messageSubject,messageText, {"htmlBody":messageHTML, replyTo: "[email protected]", name:"Антон Иванов"});
[/jscript]
Прикрепляем вложения
Для того, чтобы автоматически вкладывать файл в письмо, его необходимо предварительно сохранить на Google Drive и узнать его ID (правой кнопкой мыши кликнуть на файл и выбрать пункт меню «Получить ссылку»).
[jscript]
function sendMails() {
// 5 надо заменить на число адресатов в таблице
var rowsAmount = 5;
// Здесь надо указать тему писем
var messageSubject = "Пресс-релиз";
// Создаем переменную для активного листа
var currentSheet = SpreadsheetApp.getActiveSheet();
// Выделяем диапазон данных и получаем из него данные
var dataRange = currentSheet.getRange(1, 1, rowsAmount, 3);
var data = dataRange.getValues();
// Обходим поочередно ряды в таблице
for (i in data) {
var row = data[i];
// Из первого столбца берем адрес
var emailAddress = row[0];
// Получаем содержимое файла по его ID
var file = DriveApp.getFileById("0ByNftQqMheCPR0s4UndvQlJ6ek0");
// Формируем текст обращения
if(row[2]=="женский")
{
var appeal = "Уважаемая";
}
else
{
var appeal = "Уважаемый";
}
var emailAddress = row[0];
var appealText = appeal + " " + row[1] +"!\n";
var messageText = appealText + "Высылаем Вам пресс-релиз";
var messageHTML = appealText + "Высылаем <i>Вам</i> <b>пресс-релиз</b>";
MailApp.sendEmail(emailAddress, messageSubject, messageText, {"htmlBody":messageHTML,
attachments: [file.getBlob()], replyTo: "[email protected]", name:"Антон Иванов"});
}
}
[/jscript]
Настраиваем отложенную отправку писем
Теперь научимся откладывать запуск скрипта на определенное время. Сделать это можно с помощью триггеров. В редакторе скриптов выбрать Ресурсы -> Триггеры текущего проекта и в появившемся окне нажать на ссылку «Добавить новый триггер».
После указываем дату и время выполнения скрипта:
Здесь же можно настроить запуск рассылки в определенный день недели или месяца.
Добавляем кнопку для запуска рассылки в меню
Очень удобно запускать рассылку из меню документа. Добавить такую возможность очень легко:
Мы разобрали основные приемы создания автоматизированных рассылок на Google Apps Script. Если у вас есть какие-то вопросы по этой теме, пишите их в комментарии.
25 комментариев
Форум →Спам :/
@Varian, ну не только спам:-) этими скриптами, к примеру, можно приглашения на мероприятия рассылать или информационные рассылки для сотрудников некой компании/студентов некоего вуза.
Пособие о том как спамить ?
@k0200679, не «пособие О ТОМ как спамить», а «пособие ПО созданию эффективных рассылок»;-)
А есть какое нибудь ограничение на количество получателей в день например?
Хотел сделать рассылку для пользователей своего проекта, там довольно большое количество людей)
@Aleksrims, не более 2000 писем в сутки, если людей больше то надо разбить на несколько частей, написать функции для рассылки писем каждой группе и распланировать их выполнение на несколько дней)
@Ирина Чернова, 2000 в сутки это для всех адресатов или только для gmail адресатов? В правилах написано 2000 (500 внешних).
@Sergey, киньте ссылку, я какие-то другие правила читала(
@Ирина Чернова, __https://support.google.com/a/answer/166852?hl=ru
@Ирина Чернова, Можно как-то в скрипте написать, что после окончания такой-то функции, приступить ко второй через 25 часов?
@Sergey, можно поставить таймер в конец скрипта.
@Ирина Чернова, в каком-то комментарии вы писали про паузу. Я посмотрел, а там максимум, 60 минут или около того.
@Ирина Чернова, т.е. вместо одной таблицы контактов надо создать по количеству групп? Или можно сделать разбивку скриптом? Например – взять всех и отправлять по n-штук с t-интервалом.
@chervonenko, да можно сделать разбивку скриптом. Самый топорный способ:
function sendMails() {
// Выбираем с какой строки начинать рассылку и на какой заканчивать
var startRow=10;
var endRow = 20;
// Здесь надо указать тему писем
var messageSubject = “Пресс-релиз”;
// Создаем переменную для активного листа
var currentSheet = SpreadsheetApp.getActiveSheet();
// Выделяем диапазон данных и получаем из него данные
var dataRange = currentSheet.getRange(startRow, 1, endRow, 2);
var data = dataRange.getValues();
// Обходим поочередно ряды в таблице
for (i in data) {
var row = data[i];
// Из первого столбца берем адрес
var emailAddress = row[0];
// А из второго имя получателя
var messageText = row[1] + “, ” + “высылаем Вам пресс-релиз”;
MailApp.sendEmail(emailAddress, messageSubject, messageText);
}
}
Сделать несколько таких скриптов по интервалам и триггерами разбить их выполнение.
Рассылки через Gmail?
Серьёзно?
Для таких вещей есть Mailchimp и подобные ему сервисы.
@ifthenelse, да, серьезно.
Благодаря языку Google Apps Script возможности для создания рассылок в Gmail гораздо шире, чем у таких сервисов. Ведь их API предназначен только для генерации писем. А на Google Apps Script можно автоматически создавать электронные таблицы, текстовые документы, делать копии файлов на Drive с уникальными именами для каждого отправителя, парсить веб-сайты и еще дофига всего.
Рассылки в Gmail бесплатны, а MailChimp нет)
@Ирина Чернова, зачем мне в рассылке генерирование таблиц и документов? Зачем мне разбираться с программированием, если все необходимые документы для рассылки может подготовить специально обученный человек (текст рассылки кто-то же должен придумать) или CRM-система?
Мне кажется, вы усложняете всё.
У меня в компании рассылки делаются средствами известного продукта известной российской компании: каждый месяц по базе активных клиентов идут персонализированные письма с вложенными PDF отчетных документов и актуальных счетов. Рассылается это всё по нажатию одной кнопки или автоматически в заданное время (раз в месяц).
Информационно-рекламные рассылки идут через “мартышку”. При моих объёмах это не стоит мне ни копейки. Их пишет копирайтер и рассылает либо сразу, либо в заданное время. При этом в “мартышке” можно сверстать красивое письмо, а не рассылать скучный текст.
Вы же предлагаете либо неэффективно работать с рассылками в веб-интерфейсе почты, либо разбираться с программированием на gas, что весьма сомнительное удовольствие.
А если компания например, захочет свалить с почты Google (санкции, блокировки) и перейти, например, на Яндекс или свой почтовый сервер, то все наработки с gas превратятся в тыкву.
Вообще я уверен что для рассылок всё же есть специализированные продукты. Google под это не заточен, поэтому приходится шаманить со скриптами :)
@ifthenelse, это статья явно не для тех у которых в распоряжении есть специально обученный человек и CRM-система:-) Да, для масштабных рассылок Gmail не подходит.
Но миллионы людей в мире используют рассылки в Gmail для частных нужд и нужд микробизнеса) И разбираться тут особо не надо, скрипты очень простые.
И в Google Apps Script тоже можно сверстать красивое письмо на HTML, а не рассылать скучный текст.
Большое спасибо Вам за проявленное внимание к статьей и развернутый комментарий)
@ifthenelse, у нас нет таких людей, поскольку компания очень маленькая. Вам повезло, что есть средства на содержание специального человека и сервиса.
Раньше это называли спамом
@ArnhemNL, ну да с этими скриптами можно спамить) А можно экзаменационные билеты студентам своего потока или приглашения на корпоратив коллегам этими скриптами рассылать, к примеру.
Ирина, отличная статья, хорошо индексируется в поисковиках, думаю многим поможет. Мне бы ваши знания – я тогда автоматизировал составление спецификаций у себя на работе.
@Sergey, автоматизировать составление спецификаций очень интересная задача. Расскажите о ней подробнее. Скорее всего там Google Apps Script не обойдешься, понадобиться Perl)
Ребята, привет!
Мне нужно такой скрипт написать под ключ.
Есть ли мастер, который запилит за деньги?
Заранее благодарен за наводку.
Можно писать на akv(гав)atelia.ru
Ирина благодарю за подробное разжевывание скриптов, даже я понял…:). Использовал Ваш скрипт для рассылки, все работает. Подскажите как можно автоматизировать задачу. Есть общий файл где около 100 листов, на листе персональные данные по сотруднику. С каждого листа данные передаются IMPORTRANGE на другую книгу к которой доступ имеет соответствующий сотрудник и еще 2 человека. Осталось создать 60 листов и 60 файлов и прописать адреса в IMPORTRANGE, раздать доступы. Подскажите как можно автоматизировать задачу. Спасибо
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.На iPad/iPhone не запускаются приложения друг за другом. Не обновляются Заметки
Куда пропал раздел с обновлением приложений в iOS 13
Что делать, если с iPhone не удаляется видео
Почему iPhone перестает заряжаться от компьютера через час
Как узнать и скачать последнюю версию прошивки для старого iPhone и iPad
В iTunes (macOS Sierra) в Музыке пропали иконки. Как вернуть?
Как настроить приоритет сетевых подключений в macOS
Почему на iPhone отображается странный индикатор TTY. Как отключить