Форматер, предназначенный для подсчёта статистики активности пользователей в Google Classroom.
Позволяет получить статистику студента за выбранный период по неделям или месяцам в удобном для построения графиков формате.
{host}/api/classroom/getDataPerWeek
{host}/api/classroom/getDataPerMonth
Оба запроса имеют одинаковый формат входных и выходных данных и подсчитывают статистику с разделением по неделям и месяцам соответственно.
studEmail
(string) - MIEM почта интересующего пользователя в формате "*@miem.hse.ru";beginDate
(string) - Начальная дата в формате YYYY-MM-DD или любом другом, совместимым с JavaScript (RFC2822, ISO8601);endDate
(string) - Конечная дата в том же формате;token
(string) - Токен доступа к API для classroom.{
"id": (string),
"emailAddress": (string),
"firstName": (string),
"lastName": (string),
"courses": [{
(Course, подробнее в Google Classroom API),
"stats": [(Статистика, на неделю/месяц)],
"summaryStats": (Статистика, суммарная по курсу)
}
],
"summaryStats": (Статистика, суммарная по пользователю)
}
Приблизительный вид объекта (Course)
: Google Classroom API
Объекты статистики (Статистика)
:
{
"beginDate": (string) Дата начала отрезка,
"endDate": (string) Дата конца отрезка,
"stats": {
"turnedIn": (int) Количество сданных за отрезок времени заданий,
"lateStats": {
"onTime": (int) Количество вовремя сданных заданий,
"late": (int) Количество сданных с опозданием заданий,
"successRate": (float/null) Процент сданных вовремя заданий
},
"pointStats": {
"earned": (int) Суммарные полученные баллы за отрезок,
"max": (int) Максимально возможное количество баллов,
"successRate": (float/null) Отношение заработанных баллов к максимальным в десятибальной шкале
},
"tryStats": {
"count": (int) Количество попыток,
"average": (float/null) Среднее число попыток на задание,
"max": (int) Максимальное число предпринятых попыток сдачи задания
}
}
},
URL {host}/api/classroom/getDataPerWeek
Body
{
"studEmail": "...@miem.hse.ru",
"beginDate":"2021-02-01",
"endDate":"2021-03-01",
"token":"abcdefg0123456"
}
{
"id": "012345678901234567890",
"emailAddress": "...@miem.hse.ru",
"firstName": "...",
"lastName": "...",
"courses": [],
"stats": [
{
"beginDate": "2021-01-31T21:00:00.000Z",
"endDate": "2021-02-07T20:59:59.999Z",
"stats": {
"turnedIn": 2,
"lateStats": {
"onTime": 2,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 0,
"max": 0,
"successRate": null
},
"tryStats": {
"count": 2,
"average": 1,
"max": 1
}
}
},
{
"beginDate": "2021-02-07T21:00:00.000Z",
"endDate": "2021-02-14T20:59:59.999Z",
"stats": {
"turnedIn": 2,
"lateStats": {
"onTime": 2,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 1,
"max": 1,
"successRate": 10
},
"tryStats": {
"count": 2,
"average": 1,
"max": 1
}
}
},
{
"beginDate": "2021-02-14T21:00:00.000Z",
"endDate": "2021-02-21T20:59:59.999Z",
"stats": {
"turnedIn": 2,
"lateStats": {
"onTime": 2,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 28,
"max": 30,
"successRate": 9.333333333333334
},
"tryStats": {
"count": 2,
"average": 1,
"max": 1
}
}
},
{
"beginDate": "2021-02-21T21:00:00.000Z",
"endDate": "2021-02-28T20:59:59.999Z",
"stats": {
"turnedIn": 1,
"lateStats": {
"onTime": 1,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 18,
"max": 20,
"successRate": 9
},
"tryStats": {
"count": 1,
"average": 1,
"max": 1
}
}
},
{
"beginDate": "2021-02-28T21:00:00.000Z",
"endDate": "2021-03-01T20:59:59.999Z",
"stats": {
"turnedIn": 0,
"lateStats": {
"onTime": 0,
"late": 0,
"successRate": null
},
"pointStats": {
"earned": 0,
"max": 0,
"successRate": null
},
"tryStats": {
"count": 0,
"average": null,
"max": 0
}
}
}
],
"summaryStats": {
"turnedIn": 7,
"lateStats": {
"onTime": 7,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 47,
"max": 51,
"successRate": 9.215686274509803
},
"tryStats": {
"count": 7,
"average": 1,
"max": 1
}
}
}
URL {host}/api/classroom/getDataPerWeek
Body
{
"studEmail": "...@miem.hse.ru",
"beginDate":"2021-02-01",
"endDate":"2021-04-01",
"token":"abcdefg0123456"
}
{
"id": "012345678901234567890",
"emailAddress": "...@miem.hse.ru",
"firstName": "...",
"lastName": "...",
"courses": [],
"stats": [
{
"beginDate": "2021-01-31T21:00:00.000Z",
"endDate": "2021-02-28T20:59:59.999Z",
"stats": {
"turnedIn": 7,
"lateStats": {
"onTime": 7,
"late": 0,
"successRate": 100
},
"pointStats": {
"earned": 47,
"max": 51,
"successRate": 9.215686274509803
},
"tryStats": {
"count": 7,
"average": 1,
"max": 1
}
}
},
{
"beginDate": "2021-02-28T21:00:00.000Z",
"endDate": "2021-03-31T20:59:59.999Z",
"stats": {
"turnedIn": 11,
"lateStats": {
"onTime": 10,
"late": 1,
"successRate": 90.9090909090909
},
"pointStats": {
"earned": null,
"max": 880,
"successRate": null
},
"tryStats": {
"count": 12,
"average": 1.0909090909090908,
"max": 2
}
}
},
{
"beginDate": "2021-03-31T21:00:00.000Z",
"endDate": "2021-04-01T20:59:59.999Z",
"stats": {
"turnedIn": 0,
"lateStats": {
"onTime": 0,
"late": 0,
"successRate": null
},
"pointStats": {
"earned": 0,
"max": 0,
"successRate": null
},
"tryStats": {
"count": 0,
"average": null,
"max": 0
}
}
}
],
"summaryStats": {
"turnedIn": 18,
"lateStats": {
"onTime": 17,
"late": 1,
"successRate": 94.44444444444444
},
"pointStats": {
"earned": null,
"max": 931,
"successRate": null
},
"tryStats": {
"count": 19,
"average": 1.0555555555555556,
"max": 2
}
}
}