2 Настройка по шагам
valalav edited this page 2026-11-09 21:05:22 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Настройка по шагам

Подробная версия Быстрого старта: что происходит на каждом шаге и как проверить, что получилось.

Время: 30–40 минут впервые, 10 минут на следующую сессию.

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

Участник нажимает «Отправить»
        ↓  1–2 секунды
Яндекс Формы отправляют запрос на ваш скрипт
        ↓
Скрипт проверяет секрет и записывает строку в таблицу
        ↓
Экран каждые 15 секунд читает таблицу и перерисовывает графики

Никаких серверов: таблица и скрипт живут в вашем Google-аккаунте.

Шаг 0. Проверить доступ

  1. Открывается sheets.google.com — таблица работает.
  2. Открывается script.google.com — Apps Script доступен. Если не открывается и аккаунт служебный — нужен доступ к расширению Apps Script, это вопрос к ИТ-подразделению.
  3. В Яндекс Формах у формы есть вкладка Интеграция с разделом API.

Шаг 1. Таблица для ответов

Файл → Создать копию шаблона. Название — по сессии, например КС 19.11.2026 · Опросы.

Листы таблицы-шаблона

Лист Что делает Правки
Ответы 1 Ответы первого опроса не нужны
Ответы Ответы второго опроса не нужны
Кодирование Семь строк: текст варианта → число для среднего можно менять текст и числа
Итоги Сводка и диаграмма на формулах не нужны

Проверка: четыре листа на месте, в Итоги ячейка B3 показывает 0.

Если шаблон недоступен — создайте пустую таблицу и запустите в Apps Script функцию setupTemplate(): она создаст все листы с формулами и диаграммой.

Шаг 2. Скрипт приёма ответов

  1. Расширения → Apps Script.
  2. В Code.gs удалить всё, вставить src/Code.gs.
  3. Отредактировать верх блока настроек:
const SHEET_ID = '';                       // пусто — ID копии сохранится при запуске setupTemplate
const DEFAULT_SECRET = 'ks-live-2026';     // придумайте свой ключ
const REGION_HEADER = 'Коммуникационная сессия · Ваш регион';
const PAGE_TITLE = 'Опросы в реальном времени';

SHEET_ID лучше оставить пустым: при запуске setupTemplate в редакторе ID вашей копии сохраняется в свойствах скрипта (BOUND_SHEET_ID), поэтому опубликованное веб-приложение всегда обращается к вашей копии таблицы. Заполнять ID вручную нужно только если скрипт создан отдельно от таблицы на script.google.com — тогда берётся часть адреса таблицы между /d/ и /edit.

  1. + слева → HTML → имя файла ровно LiveWidget → вставить src/LiveWidget.html.
  2. Ctrl + S.
  3. В списке функций сверху выбрать setupTemplate и нажать Run (▶️) (при запросе доступа — Продолжить → Разрешить), чтобы проверить четыре листа и привязать ID вашей копии таблицы.

Редактор Apps Script

Проверка: слева два файла — Code.gs и LiveWidget.html; выполнение setupTemplate завершилось без ошибок.

Имя HTML-файла критично: скрипт ищет файл с именем LiveWidget. liveWidget, LiveWidget.html или «Новый файл» — не подойдут.

Шаг 3. Публикация веб-приложения

  1. Развёртывание → Новое развёртывание.
  2. На шестерёнке — тип Веб-приложение.
  3. Выполнять: Я сам. Кто имеет доступ: Все.
  4. Развернуть; при первом запросе — Продолжить, выбрать аккаунт, Разрешить.
  5. Скопировать URL веб-приложения вида https://script.google.com/macros/s/AKfyc…/exec.

Настройки публикации Подтверждение доступа Google

Проверка: если открыть этот URL в браузере, появится экран с надписью «Пока нет ответов».

Правило версий. После любой правки кода нужно: Развёртывание → Управление развёртываниями → ✏️ → Версия: Новая → Развернуть. Ссылка не меняется, но без новой версии развёртывания правка не действует. Это причина №1 состояния «я всё поправил, а ничего не изменилось».

Шаг 4. Форма и подключение к скрипту

  1. Создать форму в Яндекс Формах: один вопрос, варианты ответа. Тексты вариантов должны совпадать со столбцом A листа Кодирование.
  2. Форма → Интеграция → API.
  3. URL — ссылка из шага 3, Метод — POST, Заголовок — Content-Type: application/json.
  4. Тело запроса — шаблон из Быстрого старта.
  5. Кнопкой [+] подставить значения, курсор при этом внутри кавычек.
  6. Сохранить.

Заголовки запроса Тело запроса

Примечание к скриншоту: на иллюстрации показан пример настройки для второго опроса ("survey": "2" и необязательное поле "name"); для первого опроса укажите "survey": "1".

Проверка: отправить тестовый ответ и открыть Интеграция → API → История — запись с кодом 200; строка сразу появляется на листе Ответы 1.

Ошибка ServiceJsonContentError означает, что кавычки вокруг подставленных переменных потеряны. Ошибка редиректа или 404 — вставлен адрес редактора вместо адреса развёртывания.

Шаг 5. Экран для зала

  1. Открыть ссылку из шага 3 на компьютере, подключённом к проектору.
  2. F11 или кнопка На весь экран.
  3. Внизу справа должна быть строка «Проверено ЧЧ:ММ МСК · обновление 15 с», время меняется.

Экран с результатами

Экран можно открыть на нескольких компьютерах одновременно: он только читает таблицу.

Шаг 6. Очистка перед сессией

Расширения → Apps Script → функция clearAllTestResponses → Run.

Очистка перед сессией

Проверка: в листах ответов остались только заголовки, в Итоги — «Получено ответов: 0».

Очистка необратима: удаляются все ответы, в том числе с прошлой сессии. Если прошлые ответы нужны — сначала Файл → Сделать копию таблицы.

Второй опрос

  1. Создать вторую форму с тем же вопросом.
  2. Подключить Интеграция → API так же, но в теле запроса "survey": "2".
  3. Ответы идут на лист Ответы, первый опрос остаётся на Ответы 1.

На экране появятся средние по обоим опросам и разница в процентных пунктах.

Откат

Ситуация Действие
Правка сломала работу Управление развёртываниями → выбрать предыдущую версию развёртывания
Нужен чистый старт Файл → Сделать копию таблицы, перенастроить с шага 2
Таблица удалена Новая копия шаблона, SHEET_ID = '', новое развёртывание
Код нужно сравнить с эталоном src/Code.gs в репозитории

Далее: Проведение опроса.