Сформировать цифровой слой автоматизированной оценки учебного процесса, позволяющий преподавателям быстро собирать самооценку, peer assessment и преподавательскую оценку студентов, автоматически агрегировать результаты через Google Forms и Apps Script, а также формировать единый отчет преподавателя для последующей визуализации в dashboard и аналитике курса.
Задачи
Разработать две простые формы оценки в Google Forms:
Форма 1. Оценка студентов
самооценка
оценка других участников команды
краткий комментарий
Форма 2. Оценка преподавателя
оценка выполнения задания
качество аналитики
участие в обсуждении
комментарий преподавателя
Настроить автоматическое сохранение ответов в Google Sheets.
Создать через Google Apps Script единую ведомость оценок, в которую автоматически попадают:
ФИО студента
баллы за самооценку / peer assessment
баллы от преподавателя
накопленные баллы по курсу
Подготовить структуру данных для будущего дашборда, чтобы на следующем уроке можно было показать:
ТОП-5 студентов
накопленные баллы студентов
отдельно баллы по оценке команды
отдельно баллы по оценке преподавателя
Использовать OpenAI ChatGPT для создания:
критериев оценки
рубрик
шаблонов обратной связи
комментариев студентам
Google Forms — формы оценки
Google Sheets — единая ведомость
Google Apps Script — автоматическое объединение результатов
OpenAI ChatGPT — критерии и feedback
По итогам Milestone 3 преподаватель получает:
форму оценки студентов
форму оценки преподавателя
автоматическую ведомость оценок
накопленные баллы по студентам
готовую таблицу для дашборда следующего урока
Сводная цифровая ведомость курса MVP — простая система автоматизированного сбора оценок, формирующая базу для построения дашборда с рейтингом студентов и накопительными баллами.
Google Apps Script — это облачная платформа на базе JavaScript для автоматизации задач в экосистеме Google (Таблицы, Документы, Gmail, Диск, Календарь и др.). Позволяет писать макросы, создавать пользовательские функции, простые веб-приложения и настраивать интеграции между сервисами Google и внешними API. Не требует установки: код хранится и выполняется на серверах Google, запускаясь прямо из браузера.
Step 1. Создание проекта
Откройте Google Apps Script, нажмите Новый проект (New Project) и задайте название проекта: Form 1 — Самооценка и оценка группы.
Step 2. Работа с промптом
В OpenAI ChatGPT введите промпт:
«Создай Google Apps Script для автоматического создания Google Form с выпадающим списком фамилий студентов, шкалой самооценки 0–10 и сеткой оценки участников группы по шкале 0–10. Функция должна называться createPeerAssessmentForm().»
Step 3. Генерация и проверка кода
Проверьте полученный скрипт, убедитесь, что в коде есть список студентов, шкала 0–10 и grid-блок с фамилиями группы.
Step 4. Вставка скрипта
Скопируйте код из GPT, вставьте его в Code.gs, удалив стандартный шаблонный код, и сохраните проект.
Step 5. Запуск функции
Выберите функцию createPeerAssessmentForm() и нажмите Run / Выполнить.
Step 6. Выдача доступа
При первом запуске подтвердите разрешения для доступа к Google Forms и Google Sheets.
Step 7. Проверка формы
Откройте созданную форму, протестируйте выбор фамилии, самооценку и сетку peer assessment.
Step 8. Сохранение формы в папке проекта
Переместите созданную форму в папку своего проекта на Google Drive
Создай Google Apps Script для автоматического создания Google Form «Самооценка и оценка группы».
Требования к форме:
Выпадающий список с фамилиями студентов для выбора своей фамилии.
Шкала самооценки от 0 до 10.
Блок в формате сетки (grid), где по строкам указаны фамилии студентов группы, а по столбцам шкала от 0 до 10.
Ответы формы должны автоматически сохраняться в Google Sheets.
Код должен быть простым и готовым для запуска через функцию createPeerAssessmentForm().
function createPeerAssessmentForm() {
const form = FormApp.create('Форма 1 — Самооценка и оценка группы');
form.setDescription(
'Выберите свою фамилию, оцените себя и участников команды по шкале от 0 до 10.'
);
// Список студентов (можно менять под группу)
const students = [
'Иванов',
'Петров',
'Сидоров',
'Ахметова',
'Сулейменов'
];
// 1. Выбор своей фамилии
form.addListItem()
.setTitle('Выберите свою фамилию')
.setChoiceValues(students)
.setRequired(true);
// 2. Самооценка
form.addScaleItem()
.setTitle('Оцените себя')
.setBounds(0, 10)
.setLabels('0', '10')
.setRequired(true);
// 3. Оценка группы в виде сетки
const grid = form.addGridItem();
grid.setTitle('Оцените участников вашей группы')
.setRows(students)
.setColumns([
'0','1','2','3','4','5','6','7','8','9','10'
])
.setRequired(true);
Logger.log('Форма создана: ' + form.getEditUrl());
}
Создай Google Apps Script для автоматического создания Google Form «Оценка преподавателя».
Требования к форме:
Выпадающий список с фамилиями студентов.
Итоговая оценка преподавателя по шкале от 0 до 10.
Отдельные шкалы 0–10 для критериев: качество аналитики, участие в обсуждении, качество презентации.
Поле для текстового комментария преподавателя.
Ответы формы должны автоматически сохраняться в Google Sheets.
Функция должна называться createTeacherAssessmentForm().
function createTeacherAssessmentForm() {
const form = FormApp.create('Форма 2 — Оценка преподавателя');
form.setDescription(
'Форма для оценки студентов преподавателем по итогам занятия или задания.'
);
// Список студентов
const students = [
'Иванов',
'Петров',
'Сидоров',
'Ахметова',
'Сулейменов'
];
// Выбор студента
form.addListItem()
.setTitle('Выберите студента')
.setChoiceValues(students)
.setRequired(true);
// Оценка преподавателя
form.addScaleItem()
.setTitle('Оценка преподавателя')
.setBounds(0, 10)
.setLabels('0', '10')
.setRequired(true);
// Критерий: качество аналитики
form.addScaleItem()
.setTitle('Качество аналитики')
.setBounds(0, 10)
.setLabels('Низкое', 'Высокое')
.setRequired(true);
// Критерий: участие в обсуждении
form.addScaleItem()
.setTitle('Участие в обсуждении')
.setBounds(0, 10)
.setLabels('Низкое', 'Высокое')
.setRequired(true);
// Комментарий преподавателя
form.addParagraphTextItem()
.setTitle('Комментарий преподавателя')
.setRequired(false);
Logger.log('Форма создана: ' + form.getEditUrl());
}
Step 9. Привязка таблицы
Во вкладке Ответы создайте связанную таблицу в Google Sheets для последующего расчета баллов и построения дашборда.
Открой доступ к форме с правом "Редактор" всем у кого есть ссылка.
Step 10. Создание файла и настройка доступа
Создайте новый файл в Google Sheets с названием Сводная ведомость курса.
Откройте файлы с ответами студентов и преподавателя → Настройки доступа → добавьте свой аккаунт как Редактор (Editor) или включите доступ по ссылке. Без этого скрипт не сможет читать данные.
Step 11. Получение ID двух отчетов
Откройте файл с ответами студентов и файл с ответами преподавателя, скопируйте из ссылки часть между /d/ и /edit — это ID каждого файла.
Step 12. Работа с промптом
В OpenAI ChatGPT используйте промпт:
«Создай Google Apps Script для объединения данных из двух Google Sheets файлов в новую сводную таблицу с расчетом накопленных баллов по формуле 30% + 10% + 60%.»
Step 13. Вставка скрипта
В файле Сводная ведомость курса откройте Extensions → Apps Script, вставьте сгенерированный код и замените placeholders на реальные ID двух файлов.
Step 14. Запуск автоматической сборки
Выберите функцию createSummarySheetFromTwoFiles() и нажмите Run / Выполнить, подтвердите доступ.
Step 15. Проверка сводной таблицы
Проверьте, что автоматически создан лист Сводная ведомость со столбцами:
Student / Self / Team / Teacher / Final (или их русские аналоги).
Создай Google Apps Script для Google Sheets.
Задача:
объединить данные из двух Google Sheets файлов (ответы студентов и ответы преподавателя) в одну сводную таблицу, готовую для использования в Looker Studio.
Требования:
Подключение к двум файлам по их ID.
Использовать первый лист в каждом файле.
В таблице студентов:
столбец с именем студента
самооценка
несколько столбцов оценок участников → рассчитать среднее (Team)
В таблице преподавателя:
имя студента
оценка преподавателя (Teacher)
Создать лист «Сводная ведомость» в текущем файле.
Сформировать таблицу со столбцами:
Student
Lesson
Date
Self
Team
Teacher
Final
Rank
Medal
Рассчитать итоговую оценку:
Self × 0.3 + Team × 0.1 + Teacher × 0.6
Отсортировать студентов по Final по убыванию.
Добавить Rank (позиция в рейтинге).
Добавить Medal:
1 место — 🥇 Gold
2 место — 🥈 Silver
3 место — 🥉 Bronze
Название функции:
createSummarySheetFromTwoFiles()
function createSummarySheetFromTwoFiles() {
// --- ВСТАВЬТЕ СВОИ ID ---
const studentFileId = 'ВСТАВЬ_ID_СТУДЕНТОВ';
const teacherFileId = 'ВСТАВЬ_ID_ПРЕПОДАВАТЕЛЯ';
const studentSS = SpreadsheetApp.openById(studentFileId);
const teacherSS = SpreadsheetApp.openById(teacherFileId);
const studentSheet = studentSS.getSheets()[0];
const teacherSheet = teacherSS.getSheets()[0];
const ss = SpreadsheetApp.getActiveSpreadsheet();
let summarySheet = ss.getSheetByName('Сводная ведомость');
if (!summarySheet) {
summarySheet = ss.insertSheet('Сводная ведомость');
} else {
summarySheet.clear();
}
// --- ПАРАМЕТРЫ ---
const lesson = 'Урок 1';
const date = new Date();
// --- ЗАГОЛОВКИ (Looker-ready) ---
summarySheet.getRange(1,1,1,9).setValues([[
'Student',
'Lesson',
'Date',
'Self',
'Team',
'Teacher',
'Final',
'Rank',
'Medal'
]]);
const studentData = studentSheet.getDataRange().getValues();
const teacherData = teacherSheet.getDataRange().getValues();
// --- MAP преподавателя ---
const teacherMap = {};
for (let i = 1; i < teacherData.length; i++) {
const name = teacherData[i][1];
const score = teacherData[i][2];
if (name) teacherMap[name] = score;
}
let temp = [];
// --- ОБРАБОТКА СТУДЕНТОВ ---
for (let i = 1; i < studentData.length; i++) {
const name = studentData[i][1];
const selfScore = studentData[i][2];
if (!name) continue;
// --- TEAM (среднее из grid) ---
let teamSum = 0;
let count = 0;
for (let j = 3; j < studentData[i].length; j++) {
if (typeof studentData[i][j] === 'number') {
teamSum += studentData[i][j];
count++;
}
}
const teamScore = count > 0 ? teamSum / count : 0;
const teacherScore = teacherMap[name] || 0;
// --- FINAL SCORE ---
const total =
(selfScore || 0) * 0.3 +
(teamScore || 0) * 0.1 +
(teacherScore || 0) * 0.6;
temp.push({
name,
selfScore: selfScore || 0,
teamScore,
teacherScore,
total
});
}
// --- SORT ---
temp.sort((a, b) => b.total - a.total);
// --- OUTPUT + RANK + MEDAL ---
let output = [];
for (let i = 0; i < temp.length; i++) {
const rank = i + 1;
let medal = '';
if (rank === 1) medal = '🥇 Gold';
else if (rank === 2) medal = '🥈 Silver';
else if (rank === 3) medal = '🥉 Bronze';
output.push([
temp[i].name,
lesson,
date,
temp[i].selfScore,
temp[i].teamScore,
temp[i].teacherScore,
temp[i].total,
rank,
medal
]);
}
if (output.length > 0) {
summarySheet.getRange(2,1,output.length,9).setValues(output);
}
}
1.Выберите в разделе "Расширения" Apps Script
2.Вставьте сгенерированный GPT скрипти нажмите кнопку "Выполнить"
Step 15. Настройка автообновления (триггер)
В Google Apps Script откройте раздел Triggers (значок часов) → нажмите Add Trigger и настройте:
Function: createSummarySheetFromTwoFiles
Event source: Time-driven
Type: Every 5 minutes (или 1 час)
Теперь сводная ведомость будет обновляться автоматически.
1.В Google Apps Script откройте и настройте Triggers (значок часов) и настрой
2. Нажмите кнопку "Сохранить" и проверьте наличие триггера
Форма "Самооценка"
Форма "Оценка преподавателя"
Таблица "Самооценка"
Таблица "Оценка преподавателя"
Таблица "Сводная ведомость"
Оцените свой вклад и работу команды — это поможет вам лучше понять свой уровень и получить честную обратную связь от группы.
Поделитесь инсайтами и оцените урок — ваши ответы помогут улучшить курс и сделать его более практичным и полезным.
До следующего занятия Вам необходимо
Структурировать Урок 1 и добfвить учебный контент (на сайте своей дисциплины): паспорт, теория (презентация, допматериалы, видеоподкаст, инфографика, практика, СРС, оценка (оценочная форма студента и преподавателя (вне сайта)).
Результат работы
Урок 1 с контентом и оценочной формой студента готов.