Сформировать цифровую систему автоматизированной оценки учебного процесса с использованием Google Forms, Google Sheets и Apps Script, обеспечивающую сбор, агрегацию и подготовку данных для аналитики и дашборда курса.
Создать 2 формы в Google Forms:
Форма 1 (студенты): самооценка, peer assessment, комментарий
Форма 2 (преподаватель): оценка задания, аналитика, участие, комментарий
Настроить сбор данных в Google Sheets
Реализовать через Apps Script автоматическую сводную ведомость:
ФИО студента
Self / Peer оценки
Оценка преподавателя
Накопленные баллы
Подготовить структуру данных для дашборда:
рейтинг (ТОП-5)
динамика баллов
раздельная аналитика (peer / преподаватель)
Использовать ChatGPT для:
генерации критериев
рубрик оценки
шаблонов обратной связи
Google Forms
Google Sheets
Google Apps Script
ChatGPT
2 формы оценки
Автоматическая ведомость
Накопленные баллы студентов
Подготовленные данные для дашборда
MVP-система цифровой оценки курса:
единая ведомость с автоматическим сбором и агрегацией данных, готовая для построения дашборда и рейтинга студентов.
Google Looker Studio — это бесплатный облачный BI-инструмент от Google для создания интерактивных дашбордов, отчетов и визуализации данных.
Коротко: это “Google Data Studio нового поколения”, где можно превратить таблицы и базы данных в понятные управленческие отчеты.
С его помощью можно:
подключать данные из Google Sheets, Excel, BigQuery, Google Analytics, SQL, API
строить графики, KPI, диаграммы, таблицы, воронки
делать финансовые и управленческие дашборды
настраивать фильтры, даты, сегменты, вычисляемые поля
делиться отчетом по ссылке как Google Docs
По сути, это визуальный слой над данными: данные живут в Google Sheets / ERP / 1C-выгрузке, а Looker Studio показывает их в виде dashboard для руководителя. Это полностью соответствует вашему модулю по BI и дашбордам.
Создать систему:
автоматической оценки
рейтинга студентов
визуальной геймификации
В Google Forms создаёшь форму:
ФИО (выпадающий список)
Самооценка (0–10)
Оценка участников (grid 0–10)
👉 Результат: данные идут в Google Sheets
В Google Sheets:
Ты уже получил:
лист с ответами
структура как у тебя
В Google Apps Script:
считает Self Avg
считает Peer Avg
считает Final Score
делает Rank
создаёт лист Dashboard
👉 (код ты уже внедрил)
В листе Dashboard должны быть:
| ФИО | Self Avg | Peer Avg | Final Score | Rank | Level |
👉 это основа всей системы
Открываешь Looker Studio
Create → Report
Google Sheets
Выбрать файл
Выбрать лист:
Dashboard
Добавить:
👉 Table
Параметры:
ФИО
Badge (если сделал)
Показатели:
Final Score
👉 (Rank можно убрать)
Sort → Final Score ↓
👉 ТОП будет сверху
Правила:
≥ 9
🟢
≥ 7
🔵
≥ 5
🟠
< 5
🔴
👉 применяется ко всей строке
Поле Badge:
CASE
WHEN Rank = 1 THEN "🥇 Лидер"
WHEN Rank = 2 THEN "🥈 2 место"
WHEN Rank = 3 THEN "🥉 3 место"
WHEN Final Score >= 9 THEN "🔥 Топ"
WHEN Final Score >= 7 THEN "💪 Сильный"
WHEN Final Score >= 5 THEN "🙂 Средний"
ELSE "⚠️ Риск"
END
👉 добавляется как Dimension
ФИО
Final Score
👉 показывает рейтинг
ФИО
Self Avg
Peer Avg
👉 выявляет:
завышение
вклад в команду
Работает так:
Студент → отправил форму
↓
Google Sheets
↓
Apps Script
↓
Dashboard обновился
↓
Looker обновился
👉 преподаватель ничего не делает
Преподаватель получает:
автоматическую проверку
рейтинг студентов
визуальную аналитику
геймификацию
"Создайте систему управления вовлечённостью студентов на основе данных"
Google Form
Google Sheet
Apps Script
Looker Dashboard
Открой Google Sheets с ответами формы.
Перейди в меню: Расширения → Apps Script.
Вставь готовый код в файл Code.gs.
Сохрани проект.
Вверху выбери функцию updateDashboard.
Нажми Run (▶).
Подтверди доступы, если появится запрос.
Результат:
Скрипт автоматически создаст лист Dashboard (или очистит его, если он уже есть) и заполнит его рассчитанными данными.
Ты опытный разработчик Google Apps Script.
Создай Google Apps Script, который обрабатывает ответы Google Forms, сохраненные в Google Sheets, и строит систему геймификации студентов.
СТРУКТУРА ДАННЫХ (лист "Form Responses 1"):
Колонки:
A: Отметка времени
B: Выберите свою ФИО
C: Оцените себя
D: Оцените участников вашей группы [Иванов]
E: Оцените участников вашей группы [Петров]
F: Оцените участников вашей группы [Сидоров]
G: Оцените участников вашей группы [Ахметова]
H: Оцените участников вашей группы [Сулейменов]
ЗАДАЧА:
1. Создать (или перезаписать) лист "Dashboard"
2. В Dashboard сформировать таблицу со столбцами:
- ФИО
- Self Avg (средняя самооценка по всем ответам пользователя)
- Peer Avg (средняя оценка, полученная от других участников)
- Final Score (0.4*Self + 0.6*Peer)
- Rank (по убыванию Final Score)
- Level (геймификация)
3. ЛОГИКА:
SELF:
- Рассчитать среднее значение колонки C по каждому ФИО (колонка B)
PEER:
- Для каждого участника взять соответствующий столбец:
Иванов → колонка D
Петров → колонка E
Сидоров → колонка F
Ахметова → колонка G
Сулейменов → колонка H
- Рассчитать среднее по НЕПУСТЫМ значениям
FINAL SCORE:
Final = 0.4 * Self Avg + 0.6 * Peer Avg
RANK:
- Отсортировать по Final Score (по убыванию)
- Присвоить ранги (1 = лучший)
LEVEL:
- >= 9 → "Лидер 🥇"
- >= 7 → "Про 🥈"
- >= 5 → "Участник 🥉"
- < 5 → "Риск ⚠️"
4. ОСОБЫЕ ТРЕБОВАНИЯ:
- Игнорировать пустые значения
- Обрабатывать дубли (если студент заполнил форму несколько раз — брать среднее)
- Очистить лист Dashboard перед записью
- Сделать код читаемым (разбить на функции)
5. ДОПОЛНИТЕЛЬНО (ВАЖНО):
Добавь функцию:
updateDashboard()
И триггер:
onFormSubmit(e)
чтобы Dashboard обновлялся автоматически при новом ответе
6. ВЫВОД:
- Верни ПОЛНЫЙ ГОТОВЫЙ КОД
- Без объяснений
- С комментариями внутри кода
function updateDashboard() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// --- найти лист с ответами ---
const sourceSheet = ss.getSheets().find(s =>
s.getName().toLowerCase().includes("ответ") ||
s.getName().toLowerCase().includes("form")
);
if (!sourceSheet) throw new Error("Лист с ответами не найден");
const dashboardName = "Dashboard";
let dashboard = ss.getSheetByName(dashboardName);
if (!dashboard) dashboard = ss.insertSheet(dashboardName);
else dashboard.clear();
const data = sourceSheet.getDataRange().getValues();
if (data.length < 2) return;
const headers = data[0];
const rows = data.slice(1);
const nameIndex = 1;
const selfIndex = 2;
// --- участники ---
const participants = {};
headers.forEach((h, i) => {
const m = h.match(/\[(.*?)\]/);
if (m) participants[m[1]] = i;
});
// --- SELF ---
const selfSum = {}, selfCnt = {};
rows.forEach(r => {
const n = r[nameIndex];
const v = parseFloat(r[selfIndex]);
if (!n || isNaN(v)) return;
selfSum[n] = (selfSum[n] || 0) + v;
selfCnt[n] = (selfCnt[n] || 0) + 1;
});
// --- PEER ---
const peerSum = {}, peerCnt = {};
Object.keys(participants).forEach(n => {
peerSum[n] = 0; peerCnt[n] = 0;
});
rows.forEach(r => {
Object.entries(participants).forEach(([n, idx]) => {
const v = parseFloat(r[idx]);
if (!isNaN(v)) {
peerSum[n] += v;
peerCnt[n] += 1;
}
});
});
// --- расчет ---
const all = Array.from(new Set([...Object.keys(selfSum), ...Object.keys(peerSum)]));
const res = all.map(n => {
const selfAvg = selfCnt[n] ? selfSum[n] / selfCnt[n] : 0;
const peerAvg = peerCnt[n] ? peerSum[n] / peerCnt[n] : 0;
const finalScore = 0.4 * selfAvg + 0.6 * peerAvg;
return { n, selfAvg, peerAvg, finalScore };
});
res.sort((a, b) => b.finalScore - a.finalScore);
const out = [["ФИО","Self Avg","Peer Avg","Final Score","Rank","Level"]];
res.forEach((r, i) => {
let level = "Риск ⚠️";
if (r.finalScore >= 9) level = "Лидер 🥇";
else if (r.finalScore >= 7) level = "Про 🥈";
else if (r.finalScore >= 5) level = "Участник 🥉";
out.push([
r.n,
round(r.selfAvg),
round(r.peerAvg),
round(r.finalScore),
i + 1,
level
]);
});
dashboard.getRange(1,1,out.length,out[0].length).setValues(out);
dashboard.autoResizeColumns(1,6);
}
// --- округление ---
function round(x){
return Math.round(x*100)/100;
}
// --- ТРИГГЕР (ВАЖНО) ---
function onFormSubmit(e){
updateDashboard();
}
// --- меню для ручного обновления ---
function onOpen() {
SpreadsheetApp.getUi()
.createMenu("⚡ Геймификация")
.addItem("Обновить Dashboard", "updateDashboard")
.addToUi();
}
В Apps Script открой раздел «Триггеры» (иконка часов).
Нажми «Добавить триггер».
Укажи параметры:
Функция: onFormSubmit
Источник события: Из таблицы
Тип события: При отправке формы
Сохрани триггер.
Результат:
При каждом новом ответе формы лист Dashboard будет автоматически обновляться без ручного запуска.
Открой Google Form, связанную с таблицей.
Заполни тестовый ответ (любыми значениями).
Отправь форму.
Вернись в Google Sheets.
Открой лист Dashboard.
Результат:
Данные в Dashboard автоматически обновились:
пересчитаны Self Avg
пересчитаны Peer Avg
обновлён Final Score
пересчитан Rank и Level
Если данные обновились — система работает корректно.
1.Заполни тестовый ответ (любыми значениями)
2. Открой лист Dashboard. Данные в Dashboard автоматически обновились:
Открой Looker Studio.
Нажми «Создать отчет».
Выбери источник данных: Google Sheets.
Найди свою таблицу с оценками.
Выбери лист Dashboard.
Нажми «Добавить в отчет».
Результат:
Создан отчет, подключённый к листу Dashboard. Данные готовы для визуализации.
1.Нажми «Создать отчет»
2. Выбери источник данных: Google Sheets
3. Выберите лист Dashboard
4.Нажми «Добавить в отчет»
Придумайте название дашборду
В отчёте нажми «Добавить диаграмму» → «Таблица».
Размести таблицу на листе.
В правой панели настрой:
Параметры:
ФИО
Показатели:
Final Score
Установи сортировку:
Поле: Final Score
Порядок: по убыванию
Результат:
В отчёте отображается таблица рейтинга студентов по итоговому баллу (от максимального к минимальному).
1.Придумайте название дашборду
2.В отчёте нажми «Добавить диаграмму» → «Таблица»
В отчёте Looker Studio нажми на название источника данных (справа, блок «Источник данных»).
Откроется редактор источника данных.
Нажми «Добавить поле».
Вставь формулу:
CASE
WHEN Rank = 1 THEN "🥇 Лидер"
WHEN Rank = 2 THEN "🥈 2 место"
WHEN Rank = 3 THEN "🥉 3 место"
WHEN Final Score >= 9 THEN "🔥 Топ"
WHEN Final Score >= 7 THEN "💪 Сильный"
WHEN Final Score >= 5 THEN "🙂 Средний"
ELSE "⚠️ Риск"
END
Назови поле: Badge
Установи тип данных: Текст
Нажми «Сохранить».
Результат:
В источнике данных создано поле Badge, которое автоматически присваивает каждому студенту статус (лидер, топ, средний и т.д.) на основе рейтинга и баллов.
1.Нажми «Добавить поле»
2.Вставь формулу и Назови поле: Badge. Установи тип данных: Текст
Вернись в отчёт Looker Studio.
Кликни на таблицу рейтинга.
В правой панели настрой:
Параметры:
ФИО
Badge
Показатели:
Final Score
При необходимости измени порядок полей:
Badge размести сразу после ФИО
Результат:
В таблице рейтинга отображается статус каждого студента (🥇 Лидер, 🔥 Топ и т.д.), формируя визуальную геймификацию.
Кликни на таблицу в отчёте Looker Studio.
В правой панели перейди во вкладку «Стиль».
Найди раздел «Условное форматирование».
Нажми «Добавить правило».
Настрой правила по очереди:
Поле: Final Score
Условие: ≥ 9
Цвет: зелёный
Поле: Final Score
Условие: ≥ 7
Цвет: синий
Поле: Final Score
Условие: ≥ 5
Цвет: оранжевый
Поле: Final Score
Условие: < 5
Цвет: красный
Применяй правило ко всей строке (если доступно).
Результат:
Таблица автоматически подсвечивает студентов по уровню: лидеры, сильные, средние и зона риска.
1.Найди раздел «Условное форматирование»
2.Нажми «Добавить правило»
В отчёте нажми «Добавить диаграмму» → «Гистограмма» (Bar chart).
Размести график на странице.
В правой панели настрой:
Параметр:
ФИО
Показатель:
Final Score
Установи сортировку:
Final Score → по убыванию
Результат:
Появляется визуальный график рейтинга студентов, где сразу видно лидеров и отстающих.
1.В отчёте нажми «Добавить диаграмму» → «Гистограмма»
2.Размести график на странице и настройте параметры
В отчёте нажми «Добавить диаграмму» → «Гистограмма».
Выбери группированную гистограмму (несколько столбцов рядом) — вторая справа.
Размести график на странице.
В правой панели настрой:
Параметр:
ФИО
Показатели:
Self Avg
Peer Avg
Установи сортировку:
Final Score → по убыванию
Результат:
Для каждого студента отображаются два столбца рядом — самооценка и оценка команды, что позволяет визуально сравнить их и выявить расхождения.
1.В отчёте нажми «Добавить диаграмму» → «Гистограмма» (вторая справа)
2.Размести график на странице и наситройте параметры
Размести элементы на одном экране:
сверху — таблица рейтинга
справа или рядом — график Final Score
снизу — Self vs Peer
Выравни элементы:
таблица шире (основной блок)
графики компактнее
Проверь читаемость:
видны ФИО
видны значения
нет лишних полей
Удали лишние элементы (если есть):
Record Count
дублирующие поля
Заполни новую форму (тестовый студент)
Проверь:
обновился Google Sheets
обновился лист Dashboard
обновился Looker
Обнови отчёт (если нужно — кнопка «Обновить данные»)
В Looker Studio нажми: ⋮ → «Получить ссылку на отчет» → скопируй ссылку.
Открой Google Site
Перейди на нужную страницу
Вставь ссылку на дашборд.
Добавь название (например: «Рейтинг и результаты группы»).
Нажми «Опубликовать».
Результат:
дашборд доступен студентам в курсе и открывается по ссылке с актуальными данными.
1.В Looker Studio нажми: ⋮ → «Получить ссылку на отчет» → скопируй ссылку
2.Вставь ссылку на дашборд
Открой опубликованный Google Sites.
Перейди на страницу с дашбордом.
Убедись, что:
дашборд отображается
данные видны
нет ошибок доступа
Заполни новую форму (тест).
Обнови страницу сайта.
Результат:
дашборд на сайте обновляется и отображает актуальные данные.
После завершения каждый участник обязан заполнить форму оценки индивидуального вклада. Оценка закрывается преподавателем после урока.