Эта история прежде всего для родителей первоклашек, которые летом должны много прочитать. Программирования тоже немного будет, но главное — хотелось просто поделиться инструментом, надеюсь, полезным.
Первоклашке за лето нам нужно прочитать 39 произведений. Объём довольно приличный, поэтому подумалось, что нужно применить планирование, мониторинг и прочие технологии управления.
Проектируем продукт:
Основная задача простая — видеть, сколько осталось дней и сколько нужно прочесть.
Как забрать табличку себе:
Переходите по ссылке нажимаете "Файл" -> "Создать копию". Всё, можно пользоваться.

Начинаем с расчёта объёма работы и разделения на этапы.
Чтобы долго не мучиться, попросил нейросеть подсказать количество страниц в каждом произведении. Сетка, которой я пользовался, дала наугад, но подкинула хорошую мысль, что количество страниц разное и зависит от издания. Отлично, есть 100%-ный критерий: это количество знаков в тексте, его и берём за основу.
Классификация списка по этому простому признаку сразу дала инсайт: стало видно, что есть и прямо огромные произведения, и совсем небольшие. Прикинул тактику: читаем сперва небольшие знакомые произведения (типа «Мойдодыра»), потом по ходу набора практики переходим к незнакомым небольшим и заканчиваем каким-нибудь «Царём Салтаном».

Добавим цветовой градиент, чтобы сразу было понятно где тяжело читать где нет.
В процессе работы над списком возникла идея добавить туда мультфильмов. Оказалось, много мультфильмов советского периода по этим произведениям, посмотреть их все мне кажется отдельным достижением для современного первоклассника. Тактически пока идея такая: читаем, обсуждаем, смотрим, ещё раз обсуждаем. Но повторюсь, смотреть какой-нибудь «Цветик-семицветик» 1948 года выпуска — это не каждый взрослый сегодня сможет.
Возвращаемся к численным показателям объёма чтения:
Чтобы было проще-понятнее, введу представление о странице, обычно это 2500 знаков для формата А4, учитывая, что у нас дети и крупный шрифт, сделаем 2200 для прозы и 900 для стихов. Со страницами сразу сложно: много страниц поэзии дают мало символов в общем объёме, хотя ребёнку и понятнее. Но ещё одна сложность — что это условные страницы, в реальной книге их обычно другое количество, дети могут бунтовать.
Собираем даш-борд
У нас есть количество произведений в штуках и их объём (знаки и страницы). По шкале времени у нас дни до окончания лета.

Дедлайн делаем просто:
=date(2025;8;31)-today()
Из 31 августа вычитаем сегодняшнюю дату, получаем количество дней до конца лета. Так как предполагаем, что ребёнок будет читать не каждый день, разделим количество дней на 7, получим количество недель и умножим на два — это будет количество наших выходных от чтения в неделю (я оставил два).
Дальше делим знаки, страницы и произведения на дни и получаем наглядный объём предстоящих работ.
Добавляем главный инструмент управления: чек-боксы. Теперь можно посчитать, сколько уже сделано и сколько осталось.
Отдельно выведем список уже прочитанных произведений:
=iferror(filter(B3:B48; E3:E48 = true); «Пока не читали»)
Автоматизируем добавление даты
Добавляем расширение в виде Apps Script, пишем функцию onEdit. Она возвращает событие, когда на листе что-то меняется. Определяем колонку, в которой ждём изменений, и проверяем значение. Если поставить флажок в чек-боксе, это значение true в таблице — добавляем дату (форматируем в привычном нам виде). Заодно добавим удаление даты, если чек-бокс будет снят.
function onEdit(e) {
var sheet = e.source.getActiveSheet(); //получаем активный лист
value = e.range.getValue() // значение внесенное в ячейку
if (sheet.getName() == "Список") { //берём только события на листе с названием "Список"
var r = e.source.getActiveRange();
if (r.getColumn() == 5 && value === true) { //чек боксы в 5-ой по счёту колонке, и значение должно быть True
sheet.getRange(r.getRow(),r.getColumn()+2).setValue(new Date()).setNumberFormat("dd.mm.yy"); //колока с датой через одну от чек-бокса: getColumn()+2, добавляем дату, форматируем в день.месяц.год
}
if (r.getColumn() == 5 && value === false) { // если чек бокс снят (значеие value = False)
sheet.getRange(r.getRow(),r.getColumn()+2).clearContent(); //удаляем содержимое ячейки
}
}
}
Теперь можно сделать и диаграммы. Для объёма сделал обычную круговую, чтоб нагляднее было видно, ещё гистограмму по количеству страниц. Самое интересное, это динамика чтения по дням. На отдельной странице делаем фильтр по чек-боксам
=filter(Таблица1[[знаков]:[Дата]];Таблица1[Столбец 3] = true)
Далее делаем колонку с датами и по ним простой sumifs (дата больше сегодня и меньше завтра) SUMIFS(C:C; G:G; "<"&K2; G:G; ">="&K1). С датами небольшой нюанс, скрипт проставляет таймстемп с датой и временем, поэтому лучше поработать с периодами.
Надеюсь табличка поможет вам провести лето за книгами и освоить школьный материал более успешно.
yuliya_m
Спасибо за симпатичную табличку, появилась для неё пара маленьких предложений:
Количество произведений (ячейка L2) строго задано как
=СЧЁТЕСЛИ(E:E; ИСТИНА)&" из 39"
. Можно поменять на=СЧЁТЕСЛИ(D:D; ИСТИНА)&" из "&СЧЁТЗ(B2:B)
и аналогично для количества прочитанного (L3), что поможет корректно считать и при другом количестве книг.Формулу "Книг-в-день" (L9 и аналогично L10) можно упростить за счёт
ЧИСТРАБДНИ
, если идти от идеи двух выходных в неделю и факта, что в праздники тоже вряд ли удастся почитать.Так, если дедлайн задан датой, то формула будет выглядеть как
=L3/ЧИСТРАБДНИ(СЕГОДНЯ(); L8)
А если вместо дедлайна количество дней, то
=L3/ЧИСТРАБДНИ(СЕГОДНЯ(); СЕГОДНЯ()+L8)
Story-teller Автор
О спасибо! Добавил) По рабочим дням, наверное лучше сделать прям настраиваемое количество выходных, что-то подумал, что два дня в неделю, тоже мало может быть