Как я приложение Just Weight данными заполнял
Сел как-то я на диету...
И у меня вошло в привычку каждое утро взвешиваться. Сначала результаты взвешивания я просто записывал в блокнот, затем начал периодически дублировать эти записи в Гугель Таблицах. Затем данные из этой таблицы визуализировал на страничке своего сайта.
Показать
Затем я ещё более разнообразил свой быт, купив Xiaomi Mi Band 2. Понятно, что теперь я начал вводить вес и в Mi Fit. А дня три назад поискал на 4PDA какую-нибудь апликуху под ОС Андроид. Первой поиск мне выдал некую Just Weight – Контроль Веса, довольно молодую прогу, весь функционал которой сводится ко вводу данных и рисованию графика изменения веса. В общем целевая аудитория проги — фитнес–тёлки и старпёры, к которым отношу и себя. Поставил я ознакомительную версию проги на свой телефон, пару дней утром повводил результаты взвешивания, и тут у меня запоздало созрела весьма здравая мысль: — А как же предыдущие дни/месяцы/годы!? Казалось бы — знай себе выбирай дату и вводи соответствующий вес, прога это позволяет, но дело в том, что вести записи я стал с 16 сентября 2014 года, а это 1085 измерений! В меню приложения есть пункты "Импорт" и "Экспорт", но в обычной версии они не доступны, предлагается купить полную версию за $0.99.
У меня как раз на QIWI было рублей 150 (плюс-минус 50), поэтому решил заодно проверить надёжность санкций для жителей Крыма. Выпустил виртуальную QIWI-карту, получил её срок действия и CVC, указал их в Гугель Кошельке (через VPN, так как я живу на полуострове, которому весь «цивилизованный» мир помогает выжить с помощью санкций). Затем из проги перешёл на страницу покупки полной версии, и с помощью того же VPN оплатил её.
Настала пора потрошения файла экспорта...
У меня уже были введены результаты взвешивания за два последних дня. Я сохранил данные, указав путь к создаваемому экспорт-файлу, скопировал его на компьютер и просмотрел содержимое. Вот оно:
[{"date":1504558800000,"unit":"kg","value":1146,"tableName":"WEIGHT"},{"date":1504645200000,"unit":"kg","value":1135,"tableName":"WEIGHT"}]
Очевидно, что числа 1146 и 1135 представляют собой данные веса в десятых долях колограмма (мой вес тогда был 114,6 и 113,5 кг соответственно). Об это также говорят наименования параметров "unit" и "value". Тег "date" сразу понятен человеку, знающему что такое timestamp и UNIX-время. Здесь оно указано с точностью до миллисекунд.
N.B. Интересно, зачем такая точность в проге, рисующей график веса человека?
Последний тег "tableName" предполагает, что разработчики хотят в дальнейшем (или хотели ранее) вести графики с другими данными.
N.B. Или (чисто в порядке бредового предположения) им попались исходники проги, анализирующей, к примеру, JSON-файл с разными параметрами, и они выдрали алгоритм работы оттуда практически без изменений, сократив количество параметров до одного
Но вернёмся к созданию импортируемых данных...
Вот в таком формате я веду табличку:
Я создал на этом же листе таблицы рядом с первой записью о весе (в ячейке H2) такую формулу:
=CONCAT(((D2-DATE(1970;1;1))*86400)-10800;"000")
Пользователям русского Экселя вероятно нужно так:
=СЦЕПИТЬ(((D2-ДАТА(1970;1;1))*86400)-10800;"000")
Общий смысл формулы такой — считаем число дней от 1 января 1970 года до указанной даты [D2-DATE(1970;1;1)], переводим дни в секунды [*86400]. Так как программа не учитывает временные пояса, а я, как и весь Крым, живу по московскому времени, то из полученного значения необходимо вычесть 3 часа = 10800 секунд [-10800]. Команда сцепки строк используется для добавления в конец полученного числа трёх символов "0", повышая "точность" до миллисекунд [CONCAT(UNIX-time;"000")].
Затем в соседней ячейке I2 написал следующую конструкцию:
=CONCAT("{'date':";CONCAT(H2;CONCAT(",'unit':'kg','value':";CONCAT(E2*10;",'tableName':'WEIGHT'},"))))
Здесь всё просто — последовательно сцепляем строки:
"{’date’:" + число секунд из ячейки H2 + ",’unit’:’kg’,’value’:" + значение веса из ячейки E2, умноженное на 10 + ",’tableName’:’WEIGHT’},".
Протянув полученные формулы до конца введённых данных, я сформировал текст, необходимый для импорта в Just Weight.
Копирую все строки вида
'date':1504558800000,'unit':'kg','value':1146,'tableName':'WEIGHT'},
в любой текстовый редактор (вставляю как текст, если редактор слишком навороченный), ставлю в начале и в конце символы открытия и закрытия квадратных скобок ([мой текст]), убираю явно лишнюю запятую в последней строке, и — Voi la!
Подтягиваю полученное творение на телефон, импортирую и наслаждаюсь графиком.
P. S. Я на свой страх и риск использовал в формуле получения строк апостроф ' вместо двойных кавычек ", чтобы не нарушать визуальную целостность формул. Прокатило