24/7

online

+38 095 812 2046

+38 095 812 2046

innot needed textfoanother not needed text@dystlabdummy text.store

Статьи для инженеров

Как отправить письмо из формы Google Forms

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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

Почему Google Forms?

Безусловно, применяя встраиваемые в Ваш сайт формы-компоненты, Вы получаете такие выгоды:

  • дизайн форм повторяет дизайн сайта;
  • не используются никакие внешние ресурсы;
  • пользователь не покидает "границ" Вашего сайта и пр.

Вместе с тем, формы-плагины:

  • зависят от хостинга и движка сайта, а поэтому не всегда надежны;
  • сложно настраиваемы в плане предоставления доступа для нескольких пользователей и др.

Из собственного опыта скажу, что когда пользователи заполняют и отправляют форму с сайта, а данные записываются в базу лишь частично или возникают какие-то другие баги (первая и главная проблема из описанных выше) — невольно задумываешься о переходе на формы с надежного внешнего ресурса. Я пока остановился на Google Forms [примечание: информация актуальна на 2016 год]

Автоматизация работы с пользователями

Если Вам нужно просто собрать какую-то информацию (например, адреса пользователей), то самой Google-формы будет вполне достаточно. Однако, в последнее время популярными становятся схемы, когда после заполнения формы пользователю следует, например, передать ссылку на скачивание файла. Разумеется, этот процесс желательно автоматизировать, особенно когда счет пользователей идет на десятки и более.

Пример заполнения формы

Рассмотрим данную задачу на примере простой Google-формы. Для этого создадим тестовую заготовку:

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 1. Пример простой Google-формы

После создания формы, Google попросит Вас связать ее с формой ответов (электронной таблицей). Делаем это.

А если попытаться обойтись без скрипта?

Далеко не все любят программировать. Если Вы хотите настроить автоматизацию в визуальном режиме, без кода, можно воспользоваться дополнениями к Google Forms:

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 2. Как выбрать и установить дополнение к Google-форме

Откровенно говоря, витрина дополнений к Google Forms выглядит грустно: всего пара десятков дополнений, из которых абсолютно бесплатны лишь несколько. Да и функционал их не всегда отвечает поставленным задачам, поэтому я все же рекомендую настраивать автоматизацию с помощью существенно более гибкого (и бесплатного!) инструмента — специального языка программирования Google Script.

Язык программирования (скрипт) Google Script охватывает все основные процессы внутри Вашего облака посредством собственного API. Синтаксически скрипт — достаточно прост и позволяет разрабатывать приложения на основе сценариев с расширением .gs (JavaScript).

Покажем на предыдущем примере, как автоматизировать отправку сообщения тому, кто заполнил нашу тестовую форму.

Работа с таблицей ответов

Данные, которые пользователи будут вводить в поля Google-формы, сохраняются в электронной таблице Google Spreadsheet (облачный аналог MS Excel). Чтобы данные записались в таблицу, нужно запустить форму на выполнение (кнопка "Открыть форму"):

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 3. Пример ввода данных в форму

После нажатия кнопки "Готово" возвращаемся в исходник формы и нажимаем "Просмотреть ответы". Данные каждого нового пользователя будут записаны в отдельную строку:

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 4. Данные пользователя сохранены в таблице

Как отправить письмо через Google Script

Чтобы сформировать скрипт для отправки сообщения пользователю, перейдем в меню "Инструменты" > "Редактор скриптов...":

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 5. Запуск редактора скриптов

Окно редактора скриптов выглядит следующим образом (название проекта по умолчанию заменено на "Авто-ответ респонденту"):

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 6. Редактор скриптов Google Script

Ниже приведем полный текст скрипта, после чего поясним смысл его ключевых строк.

function sendFormByEmail(e)
{    
  // instance of Active Spreadsheet:
  var responceSheet = SpreadsheetApp.getActiveSheet();
 
  // number of rows in responce form:
  var rows = responceSheet.getLastRow();
 
  // range of names, e-mails:
  var namesRange = responceSheet.getRange(rows, 2, 1, 1);
  var emailsRange = responceSheet.getRange(rows, 3, 1, 1);
 
  // last sender's name, e-mail::
  var nameSender = namesRange.getValue();
  var emailSender = emailsRange.getValue();
 
  // message ReplyTo, subject, body:
  var emailReplyTo = "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
  var subject = "Спасибо за Ваш интерес";
  var body = "<b>Здравствуйте, " + nameSender + "!</b> <br> Спасибо, что Вы с нами :)";
    
  // send the e-mails:
  MailApp.sendEmail(emailSender, emailReplyTo, subject, body);
}

Главная функция скрипта

В строке 1 задаем имя главной функции скрипта, и передаем в нее параметр "e" (данные формы).

Инициализация переменных

В строке 4 мы объявили переменную "responceSheet", которую инициализировали значением активного (открытого в данный момент) листа в электронной таблице. Листов в таблице может быть несколько, но по умолчанию создается один лист, поэтому он всегда будет активным. Класс SpreadsheetApp является стандартным классом Google Script для управления электронными таблицами, а его метод getActiveSheet возвращает активный лист таблицы.

В строке 7 с помощью метода getLastRow записываем в переменную "rows" количество строк нашей таблицы.

В строках 10, 11 инициализируются переменные "namesRange" и "emailsRange" соответственно, отвечающие за списки имен и e-mail всех пользователей (наборы данных). Метод getRange(row, col, rowN, colN) принимает аргументы:

  • row, col — номер строки и столбца, с которых начинается диапазон данных, соответственно;
  • rowN, colN — количество строк и столбцов, которые охватит диапазон данных, соответственно.

Чтобы отправить сообщение тому пользвателю, который заполнил форму последним, нам всегда нужна последняя строка таблицы (рис. 4), поэтому первым аргументом идет номер последней строки "rows". Далее, все имена будут располагаться в столбце 2, а адреса — в столбце 3. Окончательно, нам понадобится только одна ячейка таблицы, поэтому количество строк и столбцов в методе getRange rowN=1, colN=1.

В строках 14, 15 извлекаем из переменных "namesRange" и "emailsRange" имя и адрес пользователя, и записываем их в строковые переменные "nameSender" и "emailSender", соответственно.

В строках 18, 19, 20 инициализируются строковые переменные, отвечающие за обратный адрес (кому писать ответ), тему и основной текст письма. Основной текст в данном примере содержит некоторые элементы HTML-форматирования, с целью придания сообщению более приятного вида.

Отправка сообщения

Отправка сообщения происходит в строке 23. Используем стандартный класс MailApp, и его метод sendEmail.

Настройка поведения

Если сейчас оставить все "как есть", то при заполнении пользователем нашей Google-формы ничего не произойдет. Чтобы активировать схему взаимодействия, нужно настроить триггеры:

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 7. Настройка триггеров

Удаляем неиспользуемые триггеры (серым цветом) из формы, оставляем один. В поле "Мероприятия" устанавливаем значение "Из таблицы" > "Отправка формы". Этот параметр указывает, что наш скрипт будет выполняться тогда, когда произойдет отправка формы (пользователь нажмет кнопку "Готово").

Перед первой установкой триггеров, Google может потребовать предоставить доступ к некоторым разделам Вашего аккаунта — соглашаемся на это.

Отладка скрипта

Чтобы проверить, как работает наш скрипт, воспользуемся функцией "Отладка":

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 8. Отладка скрипта

Если в коде допущены ошибки, редактор укажет на них. Если ошибок нет, то скрипт запускается на выполнение.

Внимание! Если по логике вашего скрипта происходит чтение данных из таблицы и отправка сообщения, то в режиме отладки так и произойдет — письмо тут же будет отправлено по указанному адресу. Проследите, чтобы пользователи Вашего сайта не получили от Вас каких-то отладочных сообщений.

Результат работы

На примере тестовых данных (рис. 3) получим следующий результат:

Как автоматически отправить письмо из формы Google Form | Dystlab Store

Рис. 9. Сообщение доставлено

Как видим, сообщение из скрипта было успешно доставлено по указанному нами адресу.

Успехов в освоении Google Forms и Google Script! Оставляйте комментарии, делайте репосты.

P.S. HTML-форматирование

На момент написания статьи, функция SendEmail класса MailApp допускала HTML-форматирование письма, но с более поздними версиями это может не сработать. Чтобы добиться HTML-формата, используйте следующий синтаксис:

MailApp.sendEmail({to: emailSender, replyTo: emailReplyTo, subject: subject, htmlBody: body});

Виталий Артемов

 
 

Dystlab Store - магазин для инженеров

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

Dystlab™ — торговая марка, зарегистрированная в Государственном реестре свидетельств Украины на знаки для товаров и услуг 26.02.2018, свидетельство № 238304. Владелец: физическое лицо-предприниматель Артемов В. Е., ЕГРПОУ/ИНН: 3003314690.

Viber / WhatsApp / Phone #1:
+38 095 812 2046

Telegram:
t.me/dystlab_store

innot needed textfoanother not needed text@dystlabdummy text.store

Предложить товар в магазин

Visa MasterCard | DS.Store

Visa MasterCard | DS.Store

© Copyright 2020 Dystlab™, Ukraine. All rights reserved.

Search