Отправляем формы в Гугл таблицы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, мир!

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

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

Для реализации задачи потребуется google apps script и форма обратной связи.

Перейду сразу к делу.

Шаг 1: Создаем новый гугл документ

Тут нам потребуется разметить таблицу под задачу. В моем случае это названия для колонок leadCount ma_name ma_email referer formid send. 

Шаг 2: Переходим к созданию скрипта

В ленте действий Расширения → Apps Script

Вместо функции myFunction вставляем код ниже.

function doPost(e){
  const sheet = SpreadsheetApp.getActiveSheet();
  сonst n = sheet.getLastRow() + 1;
  const d = new Date(); 
  sheet.getRange("A"+n).setValue(e.parameter.p1); // leadCount
  sheet.getRange("B"+n).setValue(e.parameter.p2); // ma_name
  sheet.getRange("C"+n).setValue(e.parameter.p3); // ma_email
  sheet.getRange("D"+n).setValue(e.parameter.p4); // refferer
  sheet.getRange("E"+n).setValue(e.parameter.p5); // formid
  sheet.getRange("F"+n).setValue(d);
  return ContentService.createTextOutput().append(JSON.stringify({result: 'comlite'}))
}

Рассмотрим работу скрипта.

function doPost(e) - так гугл будет понимать, что функцию необходимо вызвать при post запросе к скрипту.

const sheet = SpreadsheetApp.getActiveSheet(); - получаем активную таблицу.

сonst n=sheet.getLastRow()+1; - ищем номер следующей пустой строки.

const d = new Date(); - записываем текущую дату в виде дд.мм.гггг.

sheet.getRange("A"+n).setValue(e.parameter.p1); - забираем значение первого параметра из полученного запроса и записываем его в ячейку.

return ContentService.createTextOutput().append(JSON.stringify({result: 'comlite'})) - возвращаем ответ об успешном завершении записи. 

Шаг 3: Развертывание скрипта

Тянемся мышкой к кнопке Начать развертывание → Новое развертывание.

Тип конфигурации → Веб-приложение

Запуск → От моего имени (вашапочта@gamil.com)
У кого есть доступ → Все
Нажать на кнопку - Начать развертывание

Гугл попросит разрешение для этого приложения и сообщит, что оно не безопасно, соглашаемся и доверяем приложению. 

Шаг 4: Использование скрипта

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

Ссылка вида https://script.google.com/macros/s/ИДЕНТИФИКАТОР_РАЗВЕРТЫВНИЯ/exec?p1=1&p2=An&p3=rrree@mail.ru&p4=site.ru&p5=form1

где p1, p2, p3, p4, p5 - параметры из скрипта, которые он любезно поместит в таблицу.

Далее нужно отправить POST запрос на этот адрес из формы или из JavaScript. Таким образом, данные формы будут отправлены в гугл таблицу и будут доступны для просмотра.
По сути скрипт сможет работать и с GET запросом, для этого название функции должно быть doGet(), но doGet потребуется для запроса данных и вывода их на страницу.

Источник: https://habr.com/ru/post/718790/


Интересные статьи

Интересные статьи

Недавно появилась новость о том, что JCenter скоро будет закрыт и как нам дальше жить там не сказано надо бы переезжать куда-то ещё. Лично для меня главным кандидатом стал MavenCentral, п...
Как сказал Билл Эмрих, один из ведущих инженеров по разработке ядерных тепловых ракетных элементов в НАСА: «Илон Маск и другие хотят доставить людей на Марс и основать там колонию. Ес...
Интернет даже в лучшие свои годы был опасным местом. Иногда архитекторы Интернета находили способы снижения угроз, иногда терпели неудачу. Однако постоянно повторяется ситуация, когда...
AMD продолжает развивать свою долгоиграющую платформу AM4. Недавно вышло новое поколение процессоров Ryzen на микроархитектуре Zen 2. Вообще, цикл развития архитектур AMD стал чем-то напоминать т...
Project Hospital — это игра об управлении зданием больницы со всеми стандартными аспектами жанра: динамическими сценами, создаваемыми игроком, множеством активных персонажей и объектов, развёрн...