Как передать данные из формы на сайте в Гугл таблицу

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

Шаг 1: Создание Google Таблицы

Откройте Google Таблицы и создайте новую таблицу.

Придумайте название таблице и добавьте заголовки для столбцов, которые будут соответствовать полям вашей HTML-формы. Например, если у вас есть поля «Имя», «Email» и «Сообщение», добавьте соответствующие заголовки в первую строку таблицы.


Важно чтобы название и очередность столбцов совпадали с названиями и очередностью полей в форме. Если вы ходите добавить дополнительные столбец, например «Комментарии», то добавьте его в конце.

    Шаг 2: Написание Google Apps Script

    Google Apps Script – это встроенный язык программирования в Google Sheets, который позволяет автоматизировать различные задачи. В данном случае, нам нужно создать скрипт для обработки данных, поступающих из HTML-формы.

    В Google Таблице перейдите в меню «Расширения» и выберите «Apps Script».

    В открывшемся окне редакторе Apps Script введите свое название проекта, например «Обратная связь с сайта».

    В редакторе кода замените стандартный код на следующий:

      function doPost(e) {
        var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
        var data = JSON.parse(e.postData.contents);
      
        var row = [
          data.name,
          data.email,
          data.message
        ];
      
        sheet.appendRow(row);
      
        return ContentService.createTextOutput("Данные успешно добавлены в таблицу.").setMimeType(ContentService.MimeType.TEXT);
      }

      Пояснение:

      • Функция doPost обрабатывает POST-запросы, отправленные с HTML-формы.
      • В переменную data загружаются параметры, отправленные с формы.
      • Используется метод appendRow для добавления новой строки в таблицу.
      • В конце функция возвращает ответ об успешной записи данных.

      Сохраните проект.

      Справа наверху нажмите кнопку «Начать развертывание» и выберите пункт «Новое развёртывание».

      В открывшимся окне выберите «Веб-приложение».

      В настройках развертывания в пункте «Запуск от имени» выберите От моего имени. В пункте «У кого есть доступ» выберите Все.

      Нажмите «Начать развертывание». Приложение запросит разрешение на доступ к вашим данным, нажмите «Предоставить доступ». После этого будет предупреждение, нажмите на «Advanced» и далее выберите «Go to Обратная связь с сайта (unsafe)».

      Скопируйте URL веб-приложения.

        Шаг 3: Создание HTML-формы

        Теперь создадим HTML-форму, которая будет отправлять данные на серверный скрипт.

        Пример простой HTML-формы:

        <!DOCTYPE html>
        <html lang="ru">
        <head>
            <meta charset="UTF-8">
            <title>Форма обратной связи</title>
        </head>
        <body>
            <form id="feedbackForm">
                <label for="name">Имя:</label>
                <input type="text" id="name" name="name" required><br><br>
        
                <label for="email">Email:</label>
                <input type="email" id="email" name="email" required><br><br>
        
                <label for="message">Сообщение:</label>
                <textarea id="message" name="message" required></textarea><br><br>
        
                <button type="submit">Отправить</button>
            </form>
        
            <script>
                document.getElementById('feedbackForm').addEventListener('submit', function(event) {
                    event.preventDefault();
        
                    var formData = {
                        name: document.getElementById('name').value,
                        email: document.getElementById('email').value,
                        message: document.getElementById('message').value
                    };
        
                    fetch('ВАШ_URL_ВЕБ-ПРИЛОЖЕНИЯ', {
                        method: 'POST',
                        body: JSON.stringify(formData)
                    })
                    .then(response => response.text())
                    .then(data => {
                        alert(data);
                        document.getElementById('feedbackForm').reset();
                    })
                    .catch(error => {
                        console.error('Ошибка:', error);
                    });
                });
            </script>
        </body>
        </html>

        Замените ВАШ_URL_ВЕБ-ПРИЛОЖЕНИЯ на тот, который вы скопировали на предыдущем шаге.

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

        Как все работает

        Когда пользователь заполняет и отправляет форму, данные будут отправлены на ваш Google Apps Script через POST-запрос. Google Apps Script, который вы написали на шаге 2, принимает данные из POST-запроса, парсит их и добавляет в таблицу. Скрипт также возвращает сообщение об успешном добавлении данных, которое отображается пользователю.

        Желательно еще добавить валидацию данных HTML-формы, а так же сделать обработку ответов и ошибок.

        Заключение

        Мы рассмотрели процесс передачи данных из HTML-формы в Google Таблицу. Основные шаги включали создание таблицы, написание Google Apps Script для обработки POST-запросов, настройку HTML-формы и отправку данных через JavaScript. Такая система может быть полезной для автоматизации сбора данных с сайта и их сохранения в удобном формате для дальнейшей обработки.

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

        Хостинг для ваших проектов