Benutzer-Werkzeuge

Webseiten-Werkzeuge


misc:googletimeline

Arbeitzeiterfassung mit der Google Zeitachse (Timeline)

Zuerst einmal holt man sich über takeout.google.com die Standortdaten.

Nachdem man das Zip- Archiv ausgepackt hat, übergibt man die gewünschten Monats-JSONs als Parameter an dieses Script, und dass gibt es dann als CSV auf StdOut aus:

google_zeitachse_csv.py
import sys
import json
import datetime
 
 
def get_local_time(utc_string):
    try: # without millisecs
        UTC_datetime  = datetime.datetime.strptime(utc_string, "%Y-%m-%dT%H:%M:%S%z")
    except Exception as ex:
        try: #with millisecs
            UTC_datetime  = datetime.datetime.strptime(utc_string, "%Y-%m-%dT%H:%M:%S.%f%z")
        except Exception as ex:
            return None
    local_timezone =datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo
    local_datetime = UTC_datetime.replace(tzinfo=datetime.timezone.utc)
    local_datetime = local_datetime.astimezone(local_timezone)
    return local_datetime.strftime("%d-%m-%Y %H:%M:%S")
 
row_count=2
print("Lokation\tvon\tbis\tvon ger.\tbis ger.\tStunden\tÜberstunden")
for file_path in sys.argv[1:]:
    try:
        print(file_path)
        row_count+=1
        with open(file_path, encoding='utf-8') as fin:
            data = json.load(fin)
    except Exception as ex:
        print(str(ex))
        data = None
    if data:
        for timelineObject in data["timelineObjects"]:
            if "placeVisit" in timelineObject:
                placeVisit = timelineObject["placeVisit"]
                try:
                    location = placeVisit["location"]["name"]
                    startTimestamp = get_local_time(placeVisit["duration"]["startTimestamp"])
                    endTimestamp = get_local_time(placeVisit["duration"]["endTimestamp"])
                    print(f"{location}\t{startTimestamp}\t{endTimestamp}\t=RUNDEN(B{row_count}*24*4;0)/(24*4)\t=RUNDEN(C{row_count}*24*4;0)/(24*4)\t=E{row_count}-D{row_count}-(45/(24*60))\t=F{row_count}-(8/(24))")
                    row_count+=1
                except Exception as ex:
                    print(str(ex))
misc/googletimeline.txt · Zuletzt geändert: 2022/06/23 16:58 von admin