Stundenschreibung mit Google Maps

Wenn man auf seinem Google- Handy den Standortverlauf aktiviert hat, kann man damit seine Anwesenheiten am Arbeitsplatz tracken und folgendermassen auswerten:

auf https://takeout.google.com/ nur den Standort-Verlauf exportieren

Zip-Datei herunterladen

in der Zip- Datei alles löschen bis auf das gewünschte Jahr/Monat in /Takeout/Standortverlauf/Semantic Location History/, damit's beim Auspacken nicht so riesig wird

und mit diesem Programm die jeweilige Monats.json- Datei in eine CSV- Ausgabe umleiten

und die dann mit Excel weiter bearbeiten

import sys import json from pprint import pprint from dateutil import parser, tz def read_local_time(time_string): from_zone = tz.tzutc() to_zone = tz.tzlocal() utc = parser.isoparse(time_string) # Tell the datetime object that it's in UTC time zone since # datetime objects are 'naive' by default utc = utc.replace(tzinfo=from_zone) # Convert time zone return utc.astimezone(to_zone) with open(sys.argv[1], encoding='utf-8') as fh: import_data = json.load(fh) filters=sys.argv[2:] print("Tag\tOrt\tVon\tBis") worksheet_entries={} for timelineObject in import_data["timelineObjects"]: for key, value in timelineObject.items(): if key=="placeVisit": if "location" in value: start_time=read_local_time(value["duration"]["startTimestamp"]) end_time=read_local_time(value["duration"]["endTimestamp"]) day_date= start_time.strftime("%d.%m.%Y") if "semanticType" in value["location"] and value["location"]["semanticType"]=="TYPE_WORK": name="Arbeitsplatz" elif "name" in value["location"]: name=value["location"]["name"] else: name=value["location"]["address"] if not day_date in worksheet_entries: worksheet_entries[day_date]=[] worksheet_entries[day_date].append({ 'name':name, 'start_time':start_time.strftime("%H:%M"), 'end_time':end_time.strftime("%H:%M") }) for day_date,entries in worksheet_entries.items(): for entry in entries: if len(filters)==0 or entry["name"] in filters: print(f'{day_date}\t{entry["name"]}\t{entry["start_time"]}\t{entry["end_time"]}')