Вот как это сделать:
Шаг 1: Создайте форму и привяжите Google Sheets
Создайте Google Forms.
В настройках формы перейдите в раздел «Ответы» → «Привязать к таблице», чтобы сохранять ответы в Google Sheets.
Шаг 2: Напишите скрипт для проверки дубликатов
Откройте таблицу с ответами → «Расширения» → «Apps Script».
Вставьте следующий код:
function checkDuplicates(e) {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
const lastRow = e.range.getRow();
const currentAnswer = e.values[1]; // Индекс столбца с нужным вопросом (начинается с 0)
// Проверяем все предыдущие ответы
for (let i = 1; i < data.length; i++) {
if (data[i][1] === currentAnswer && i !== lastRow - 1) { // [1] — индекс столбца с ответами
sheet.deleteRow(lastRow); // Удаляем дубликат
// Отправляем письмо с предупреждением (опционально)
MailApp.sendEmail("ваш@email.com", "Дубликат ответа", `Ответ "${currentAnswer}" уже существует.`);
break;
}
}
}
Шаг 3: Настройте триггер
В редакторе Apps Script нажмите на значок ⏰ «Триггеры» → «Добавить триггер».
Выберите:
Функция: checkDuplicates.
Источник: «Из таблицы».
Событие: «При изменении».
Сохраните.
Как это работает
При отправке формы скрипт проверяет, есть ли в таблице дубликат ответа в указанном столбце.
Если дубликат найден — строка удаляется, а вам приходит уведомление на почту.
Ограничения
Задержка: Google Forms обновляет таблицу не мгновенно, поэтому возможна отправка нескольких дубликатов до удаления.
Уведомление пользователя: Скрипт не может заблокировать форму в реальном времени, но можно добавить всплывающее сообщение через HTML-шаблон (это требует более сложной настройки).
Альтернатива
Используйте платформы с встроенной проверкой на дубликаты:
Microsoft Forms: Ограничение на уникальные ответы.
Typeform: Платные планы позволяют настраивать валидацию.
JotForm: Гибкие правила для полей.