Автоматизация Google Форм без кода

Этот навык поможет пользователям создавать Google Формы и автоматизировать действия после их отправки, не требуя написания кода. Подходит для уведомлений по электронной почте, ведения журналов в таблицах и обработки ответов.

Экосистема: Универсальный

Инструкция

---
name: google-no-code
description: "Design Google Forms and wire Apps Script triggers (onFormSubmit) for email alerts, spreadsheet logging, and dynamic questions — no code editor required."
category: automation
risk: safe
source: self
source_type: self
date_added: "2026-09-19"
author: WHOISABHISHEKADHIKARI
tags: [google, forms, apps-script]
tools: [claude, cursor, gemini]
---

# Автоматизация Google Форм без кода

## Обзор

Данный материал направляет пользователя на создание Google Формы в интерфейсе Форм и подключение её к триггерам Google Apps Script, без необходимости написания пользовательской интеграции или выхода из браузера. Рассматриваются дизайн формы, редактор Apps Script, триггер `onFormSubmit` и небольшие скрипты для обработки ответов, которые выполняются автоматически при отправке формы.

## Когда использовать этот навык

- Используйте, когда пользователь хочет создать Google Форму и автоматизировать действия после её отправки.
- Используйте, когда пользователь запрашивает уведомления по электронной почте, ведение журналов в таблицах или условную обработку ответов формы.
- Используйте, когда пользователь хочет получить фрагменты Apps Script для вставки в проект скрипта, связанного с формой.
- Пропустите этот навык, если пользователю нужен пользовательский интерфейс, платные API или полноценное автономное приложение Apps Script.

## Как это работает

### Шаг 1: Определите форму в интерфейсе Форм

Создайте форму в Google Формы с четкими вопросами, типами ответов (короткий ответ, множественный выбор, флажок) и обязательными полями. Соответствуйте идентификаторам вопросов тому, что потребуется скрипту позже. Добавьте описание к форме, чтобы респонденты знали, чего ожидать.

### Шаг 2: Откройте связанный редактор Apps Script

В форме перейдите в `Расширения > Apps Script`. Это откроет проект, связанный с формой. Скрипт может читать каждую отправку через объект события `e.response`.

### Шаг 3: Напишите обработчик ответов

Добавьте функцию, которая принимает событие `onFormSubmit`, читает `e.response` с помощью `getItemResponses()`, а затем выполняет желаемое действие: отправляет электронное письмо, записывает в таблицу или ветвится по ответам.

### Шаг 4: Установите триггер

В Apps Script перейдите в меню часов/триггеров, выберите функцию `onFormSubmit`, выберите источник события **Из формы** и тип события **При отправке формы**, затем сохраните и авторизуйте. Функция будет выполняться автоматически при каждой новой отправке.

### Шаг 5: Протестируйте с реальной отправкой

Отправьте тестовый ответ из приватного/инкогнито окна и проверьте, что электронное письмо, строка таблицы или журнал приходят один раз. Проверьте страницу выполнения Apps Script (`Выполнения` в редакторе) на наличие ошибок и прочитайте трассировку стека, если что-то не сработает.

## Примеры

### Пример 1: Уведомление по электронной почте при каждом ответе

```javascript
function onFormSubmit(e) {
  const response = e.response;
  const email = getEmail(response);
  MailApp.sendEmail({
    to: email,
    subject: "Form submission received",
    body: "Thank you. We have recorded your response."
  });
}

function getEmail(response) {
  const items = response.getItemResponses();
  for (const item of items) {
    if (item.getItem().getTitle().toLowerCase().includes("email")) {
      return item.getResponse();
    }
  }
  return Session.getActiveUser().getEmail();
}
```

### Пример 2: Запись каждого ответа в Google Таблицу

```javascript
function onFormSubmit(e) {
  const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("Responses");
  const itemResponses = e.response.getItemResponses();
  const row = [new Date()].concat(itemResponses.map(r => r.getResponse()));
  sheet.appendRow(row);
}
```

### Пример 3: Ветвление по ответу множественного выбора

```javascript
function onFormSubmit(e) {
  const items = e.response.getItemResponses();
  for (const item of items) {
    if (item.getItem().getTitle().toLowerCase() === "priority") {
      const priority = item.getResponse();
      const subject = priority === "High" ? "[URGENT] " : "";
      MailApp.sendEmail({ to: MANAGER_EMAIL, subject: subject + "New submission", body: itemResponsesText(e) });
    }
  }
}
```

## Лучшие практики

- ✅ Тестируйте каждый триггер с реальной отправкой перед тем, как сообщить пользователю, что он работает.
- ✅ Используйте четкие, стабильные названия вопросов, чтобы скрипт мог сопоставлять элементы по названию, а не по хрупким индексам.
- ✅ Храните секреты и ключи API в свойствах скрипта, никогда не записывайте их в файле.
- ✅ Добавьте блоки try/catch вокруг логики обработчика и записывайте ошибки с помощью `Logger.log`, чтобы сбои отображались на странице Выполнений.
- ❌ Не предоставляйте широкие области доступа; работайте с минимальными разрешениями, необходимыми для действия формы.
- ❌ Не отправляйте электронные письма на адреса, которые форма не собрала законно.

## Ограничения

- Применяются квоты Apps Script (лимиты на отправку электронной почты, ежедневные триггеры, время выполнения); большой объем требует проверки.
- Только отправки формы вызывают событие; редактирование ответов пользователями по умолчанию не вызывает `onFormSubmit`.
- Навык создает скрипты, которые пользователь должен вставить, авторизовать и развернуть; он не может самостоятельно создать проект Google Форм.
- Интеграция с таблицами требует ID таблицы и разрешения, которые должны быть подтверждены с пользователем.

## Примечания по безопасности и безопасности

- Скрипт выполняется в учетной записи Google пользователя с теми областями, которые он объявляет. Проверьте запрос на авторизацию и предоставьте только минимально запрашиваемую область.
- Не записывайте, не печатайте и не встраивайте пароли, токены OAuth или ключи API в скрипты форм или общие файлы.
- Ответы на форму могут приходить от любого, с кем форма поделена; проверяйте вводимые данные перед тем, как действовать на их основе.
- Сначала тестируйте в контролируемой среде; отправка электронной почты или добавление строк происходит при каждой отправке, как только триггер активен.

## Распространенные ошибки

- **Проблема:** Обработчик выполняется для каждой отправки и дублирует работу.
  **Решение:** Предпочитайте единый объект события `e.response`; не запрашивайте отдельно сохраненные ответы формы внутри `onFormSubmit`.
- **Проблема:** `item.getResponse()` возвращает `undefined` для необязательных вопросов.
  **Решение:** Защитите проверкой на истинный ответ или сделайте вопрос обязательным.
- **Проблема:** Электронное письмо отправляется на неправильный адрес.
  **Решение:** Сопоставьте по названию вопроса, содержащему "email", и проверьте, что собранное значение принадлежит респонденту перед отправкой.

## Связанные навыки

- `@google-sheets-automation` - Используйте, когда целевой журнал ответов - это таблица, которая требует своей автоматизации.
- `@google-docs-automation` - Используйте, когда вывод формы должен создавать или обновлять Google Документ.
Источник на GitHub