Übernahme Daten Web-Kalender in App

Ansicht von 27 Beiträgen - 1 bis 27 (von insgesamt 27)
  • Autor
    Beiträge
  • Xandrian
    Teilnehmer
    Beitragsanzahl: 12

    Guten Morgen,

    ich beschreibe hier einen Weg, wie man seine Daten aus den Web-Kalender in die (Android) App migrieren kann. Für Apple Geräte kann ich das leider nicht testen. Vorweg: Diese Anleitung ist leider nichts für Anfänger und setzt gewisse Grundkentnisse in der EDV vorraus!

    Folgendes wird benötigt:

    • Microsoft Excel (andere Programme könnten funktionieren, hab ich jedoch nicht getestet)
    • ein Texteditor wie z. B. Notepad oder Notepad++
    • die Möglichkeit Daten per Kabel vom Rechner auf das Handy zu kopieren
    • ein Mailprogramm auf dem Handy zum senden und empfangen von E-Mails
    • eine Sicherung der Daten aus dem Web-Kalender als E-Mail

    Bei der Übernahme gibt es aktuell folgende Limitierungen:

    • Beim Import werden alle vorhandenen Daten in der App gelöscht -> Experten können natürlich ein Backup erstellen und die beiden Datenmengen vereinen
    • Daten vor 2015 können aufgrund einer Einschränkung in der App nicht angezeigt werden
    • bei Mehrfachmedikamentierung gibt es noch Probleme

    Die Daten des Web-Kalenders können per E-Mail gesichert werden. Hierbei erhält man eine mehr oder weniger lange grafisch aufbereitete Ausgabe der Daten. Das Backup der App besteht aus einer Textdatei, welche alle Informationen im sogenannten JSON-Format gespeichert hat. Dies machen wir uns hier zu nutze und konvertieren einfach die Informationen aus der Backup E-Mail in dieses Format.

    1. Übernahme der Daten in Excel

    Im ersten Schritt übernehmen wir die Daten aus der Sicherung in Excel. Dazu starten wir das Programm und legen ein neues, leeres Dokument an.

    Im zweiten Schritt öffnen wir in unserem Mailprogramm die Ergebnisse des Web-Kalenders, welche wir uns zusenden haben lassen. Dort scrollen wir bis zu den Punkt „Monatliche Ergebnisse“ herunter. In der Zeile darunter sollte es mit einem Monatsnamen und dem Jahr beginnen. Das ist unsere Einstiegszeile. Wir markieren nun alles von hier an (inklusive diesem Monat und Jahr aber ohne der Zeile „Monatliche Ergebnisse“) bis oberhalb dem Wort „Jährliche Eregebnisse“. Das ist ziemlich weit am Ende der E-Mail. Diese Auswahl kopieren wir mit Strg+C und fügen diese in Excel mit Strg+V in die Spalte A2 (!!! nicht A1 !!!) ein. Das können nun durchaus mehrere tausend Zeilen sein. Gefüllt werden die Spalten A bis H. Sollte sich auch in den Spalten I und J etwas befinden, so hast du aus versehen auch „Jährliche Auswertungen“ kopiert. Diese können gelöscht werden da wir diese nicht benötigen.

    Der erste Schritt ist geschafft und die Roh-Daten sind übernommen.

    2. Übernahme der Formeln in Excel

    Um jetzt die notwendigen Funktionen zu realisieren, benötigen wir einige Excel Formeln. Diese müssen in die entsprechenden Felder eingefügt werden und dann immer bis zum Ende der gefüllten Zeilen gezogen werden.

    I3: Ermittlung Monat und Jahr
    =WENN(UND(ISTZAHL(A3);A3>0;A3<=2958465;LINKS(ZELLE("format";A3);1)="D");A3;I2)

    Hier wird das Monat und das Jahr ermittelt. Wenn sich dieses nicht ändert, übernehmen wir den Wert der vorherigen Zelle. Das ist für unser Datum relevant und eine einfache Hilfszelle. Die Formel aus der Spalte I3 muss dann natürlich auf alle anderen Zellen der I-Spalte gezogen werden in der sich in den Spalten davor Einträge befinden. Wer in dieser Zelle nur eine Zahl sieht, der kann das Format auf Datum ändern, das muss aber nicht sein. Es müsste dann immer der erste eines Monats ersichtlich sein (mit Ausnahme der I3 – dort steht der 00.01.1900).

    J3: Tageswert
    =WENN(UND(ISTZAHL(A3);A3<=31);A3;"")

    Hier übernehmen wir einfach den Wert des Tages. Also die Zahl zwischen 1 und 31. Auch diese brauchen wir später für das Datum.

    K3: JSON Erzeugung
    =WENN(ODER(C3="";NICHT(ISTZAHL(A3)));"";"{"&WENN(C3<>"";"""activity"":true,";"")&WENN(B3="A";"""aura"":true,";"""aura"":false,")&"""date"":"""&TEXT(I3+J3-1; "JJJJ-MM-TT")&"T00:00:00"","&"""duration"":"&F3&","&"""intensityValue"":"&E3&","&WENN(G3="";"""medicationEffectValue"":0";"""medication"":"""&G3&"[1]"",""medicationEffectValue"":"&H3)&","&"""nausea"":false,""pressure"":0,""sickness"":true,""temperature"":0,""typeValue"":0},")

    In der K-Spalte geht es jetzt ans eingemachte. Hier erzeugen wir die Werte für die spätere Backup-Datei im JSON-Format. Auch diese Formel muss dann, wie die vorherigen, auf alle Spalten übertragen werden, in der Werte von unserer Auswertung in den ersten Spalten vorhanden sind.

    3. Aufbau der JSON Datei

    Als nächstes bauen wir unsere JSON Datei auf. Hierfür habe ich ein Grundtemplate aus einem Backup erstellt:

    {
       "attacks":[
    !!!hier kommt unser Text rein!!!
       ],
       "medications":[
       ],
       "midas":[
       ],
       "relaxations":[
       ]
    }

    Diesen fügen wir nun in unseren Texteditor, z. B. Notepad, ein. Danach wechseln wir zurück in Excel und klicken bei den Spalten auf das „K“ um die komplette Spalte zu markieren. Somit sind unsere erzeugten JSON Elemente mit unseren Attacken markiert und können mit Strg+C kopiert werden. Ist dies erledigt, wechseln wir zurück in unseren Editor und ersetzen den Platzhalter durch das einfügen des markierten Textes (Strg+V).

    Jetzt kommt ein etwas kniffeliger Teil. Bei den eingefügten JSON Elementen müssen wir uns jetzt das letzte Element suchen. Je nachdem, wann der letzte Anfall war, können hier zig Leerzeilen vorhanden sein. Haben wir diese Zeile jedoch gefunden (diese sind ja recht lang), so müssen wir hier (und nur hier!) das letzte Komma nach der geschweiften Klammer (}) entfernen.

    Um die Datei zu validieren und auch lesbarer zu gestalten, markieren wir nun den kompletten Text (Strg+A) und kopieren diesen (Strg+C). Dann wechselt man auf die Webseite eines JSON Validierungsdiensts (z. B. https://jsonformatter.curiousconcept.com/) und fügt dort alles ein und klickt auf validieren. Das Ganze hat mehrere Gründe:

    • wir sehen ob unsere JSON Datei auch syntaktisch korrekt ist und nicht irgendwo ein Fehler durch die Erzeugung aufgetreten ist
    • die ganzen Leerzeilen werden entfernt und somit die Datei kleiner und lesbarer
    • die Datei wird sauber formartiert und wir können diese auch schön lesen

    Sollten Fehler auftreten, so diese prüfen und die obigen Formeln genau anschauen (vielleicht hab ich auch einen Fehler drinnen aber meine Tests waren bisher erfolgreich).

    Ist alles OK und kein Fehler aufgetreten (also z. B. alles grün), so kopiert man den neu erzeugten und sauber formartierten JSON Code aus dem Textfeld in der Webseite (alles markieren mirt Strg+A und kopieren mit Strg+C) und ersetzt damit den Text in seinem Texteditor. Diese Datei speichert man jetzt ab. In meinen Tests gab es Probleme bei einem freien Dateinamen. Das sollte an sich egal sein, war es jedoch nicht. Deswegen empfehle ich einen Dateinamen in der folgenden Form (YYYYMMDD steht als Platzhalter für Jahr, Monat und Tag): Migraine_Backup_YYYYMMDD000000.mbu

    4. Übertrag auf das Smartphone und Einspielen des Backups

    Als nächstes verbindet man sein Smartphone mit dem Computer und überträgt die Datei auf das Smartphone. Bitte den Pfad merken da wir das gleich wieder benötigen.

    Ist dies erledigt, so startet man die App „Eigene Dateien“ und wählt dort „Interner Speicher“ aus. Hier sucht man die Datei und sendet sich diese selbst per E-Mail. Diese umständliche Vorgehensweise ist notwendig, da die Datei als Anhang mit den dem Mime-Typ „application/octet-stream“ benötigt wird und von einem E-Mail-Programm ansonsten als „text/plain“ gesendet wird. Als Textdatei ist es jedoch nicht möglich, einen Import zu starten. Mit diesem Umweg ist dann ein direkter Import möglich.

    5. Schlusswort

    Mit diesen, zugegeben nicht ganz einfachen, Weg kann man seine Daten mitnehmen. Warum der Web-Kalender keine Funktion hat, von sich aus diese simple JSON-Datei zu erstellen, erschließt sich mir nicht. Ich hoffe jetzt noch, dass die App angepasst wird, um zumindest auch noch historische Daten vor 2015 anzeigen zu können. Theoretisch sind mit diesem Weg auch der Import von anderen Quellen realisierbar wenn man die Daten in die entsprechenden Felder einfügt.

    • Dieses Thema wurde geändert vor 1 year, 7 months von  Xandrian. Grund: Typo
    heinbo
    Teilnehmer
    Beitragsanzahl: 8

    Hallo!
    Du hast genau die Frage beantwortet, die ich habe: wie die Web-Daten in die App kriegen. Super – danke für die Arbeit!
    Ich hab mich drangemacht, deine Anleitung umzusetzen. Einige Fragen tauchten dabei auf:
    Excelliste: am Schluss, wo das Komma einmalig entfernt werden soll, habe ich nur eine OFFENE geschweifte Klammer; hier war ich nicht sicher, welches Komma gemeint ist.
    JSON: hier hat die Formatierung nicht geklappt. Auf der von dir angegebenen Seite gab es „unknown error“; auf anderen Formatern kam: fehler in der kommandozeile – etwas anderes wurde erwartet, ich konnte aber nicht herausfinden, was genau geändert werden sollte, weil ich mich zuwenig auskenne.
    APP: kannst du mir sagen, wohin genau die Daten dann in die App sollen? Ich finde keine Import-Funktion, habe auch keine Rootberechtigung, um irgendeinen Ordner anzulegen. Wenn ich die als mbu gespeicherte Datei als Mailanhang habe, was genau muss ich dann tun?

    VIELLEICHT HAST DU NOCH MAL ZEIT, AUF DIE SACHEN ZU GUCKEN. ICH FÄND ES TOLL, WEIL ICH ES GUT FINDE, WENN SO VIEL DATEN ALS MÖGLICH KOMPLETT IN DER APP VERFÜGBAR SIND. AUF JEDEN FALL VIELE GRÜSSE UND NOCH MAL DANKE FÜR DIE MÜHE!

    Xandrian
    Teilnehmer
    Beitragsanzahl: 12

    Hallo heinbo,

    hm, eine offene geschweifte Klammer darf eigentlich nicht vorhanden sein. Die muss immer geschlossen sein. Deswegen klappt auch die Validierung nicht. Ich vermute bei der Formel ist hier irgendwas schief gegangen oder das wurde abgehackt. Das Forum zeigt diese lange Formel nicht schön an. Ich schau ob ich hier noch etwas verbessern kann.

    Das mit der Import Funktion ist etwas unschön und da habe ich auch lange gesucht. 😉 Du musst die Datei dann (wenn sie sich auch sauber validieren lässt) per E-Mail senden. Dann kannst du diese auf dem Smartphone anklicken und mit der App öffnen. Dann wird der Import angestartet. Da du hier aber einen bestimmten MIME-Type brauchst musst du das vom Handy machen. Umständlich aber der einzige Weg den ich gefunden habe.

    Ich habe übrigens noch einen kleinen Fehler gefunden den ich gleich noch ausbessern werde. Die Version 2 ist in wenigen Minuten online. 😉

    Schöne Grüße,
    Tobias

    Xandrian
    Teilnehmer
    Beitragsanzahl: 12

    Version 2 mit Fehlerbereinigung

    Leider haben sich oben ein paar kleine Fehler eingeschlichen die ich hier beheben möchte…

    Die erste Formeel für die Ermittlung von Monat und Jahr ist falsch. Diese muss in die Spalte I2 und lautet wie folge

    I2: Ermittlung Monat und Jahr
    =WENN(UND(ISTZAHL(A2);A2>0;A2<=2958465;LINKS(ZELLE("format";A2);1)="D");A2;I1)

    Die Formel zum erzeugen der JSON Einträge hatte leider auch einen kleinen Schönheitsfehler. Der Effekt der Medikamentierung wurde nicht übernommen. Das ist jetzt hier behoben. Scheinbar gab es auch Probleme beim kopieren der langen Formel weil die CODE-Ausgabe das in eine Zeile packt. Deswegen die Formel jetzt als normaler Text. Es handelt sich um eine Formel die so wie diese hier steht übernommen werden muss.

    =WENN(ODER(C3=““;NICHT(ISTZAHL(A3)));““;“{„&WENN(C3<>““;“““activity““:true,“;““)&WENN(B3=“A“;“““aura““:true,“;“““aura““:false,“)&“““date““:“““&TEXT(I3+J3-1; „JJJJ-MM-TT“)&“T00:00:00″“,“&“““duration““:“&F3&“,“&“““intensityValue““:“&E3&“,“&WENN(G3=““;“““medicationEffectValue““:0″;“““medication““:“““&G3&“[1]““,““medicationEffectValue““:“&WENN(UND(H3>=0;H3<=3);H3+1;““))&“,“&“““nausea““:false,““pressure““:0,““sickness““:true,““temperature““:0,““typeValue““:0},“)

    Der JSON-Code endet dann beispielsweise wie folgt. Das hier jetzt Fett markierte Komma muss entfernt werden.

             "intensityValue":3,
             "medication":"Allegro[1]",
             "medicationEffectValue":3,
             "nausea":false,
             "pressure":0,
             "sickness":true,
             "temperature":0,
             "typeValue":0
          }<strong>,</strong
       ],
       "medications":[
       ],
       "midas":[
       ],

    Sollten Probleme oder Fragen bestehen, einfach melden.

    Schöne Grüße
    Tobias

    • Diese Antwort wurde geändert vor 1 year, 7 months von  Xandrian.
    heinbo
    Teilnehmer
    Beitragsanzahl: 8

    Hi Tobias! Du bist fix, danke!
    PRobleme weiterhin das Formatieren: auf „Deiner Seite“ kommt die Meldung, die Anzahl der Daten sei zu hoch; auf der anderen Seite die Fehlermeldung “
    Error: Parse error on line 2:
    {„attacks“:[=WENN(ODER(C3=““;NIC
    ————^
    Expecting ‚STRING‘, ‚NUMBER‘, ‚NULL‘, ‚TRUE‘, ‚FALSE‘, ‚{‚, ‚[‚, ‚]‘, got ‚undefined‘

    Ist an diesem BEfehl villt. irgendwas, was du noch anpassen könntest?

    Und das Rätsel des Imports? Ich denke mir, ich müsste „Auswertung“ anklicken und könnte dann die Jahre ab 2015 auswählen; aber wohin speiche ich denn die MIME-bzw. mbu- Datei,damit die App sich daraus füttert?Sorry, dass dir jetzt aus deinem guten Job soviel Nachfragen entstehen; aber ich komm nicht weiter.