Wir alle wollen produktiver arbeiten, effizienter werden und noch mehr leisten um einfach mehr Zeit für andere Dinge zu haben. Mit der Funktion x-callback kannst Du effizient Deinen Workflow bewerkstelligen.

Persönlich bin ich der Ansicht das auch das Zeitmanagement seine Grenzen hat und sei es nur das der Mensch auch mal schlafen muss. Aber dies tut keinen Abbruch ein weiteres Geheimnis zu lüften um Aufgaben zu automatisieren oder ein einfacheres Handling zu erhalten.

Ein Geheimnis ist die x-callback Funktion um Deine Produktivität zu steigern und vor allem wiederkehrende Aufgaben zu automatisieren oder ständiges hin-und-her springen zwischen Apps und Programmen zu vermeiden - und das sowohl auf dem Computer als auch auf dem Smartphone oder Tablett.

Wie vielmals von meinen Lesern gewünscht, wir auch dieses Geheimnis der Produktivität als eine dreiteilige Folge erscheinen und Stück für Stück gelüftet.

Was ist x-Callback

Die Callback-, also Rückruf-Funktion, ist nicht neu und wird in sämtlichen Programmiersprachen verwendet. Ob Java, Python, C, C++ und anderen wird diese Funktion als Übergabe von Argumenten zu einer anderen Funktion verwendet.

Etwas neuer ist die Möglichkeit dies auch „außerhalb“ des Codes zu verwenden mit der x-Callback Funktion.

Entwickler von Apps und Software haben sozusagen ein kleines „Türchen“ aufgemacht um Argumente zu ihrer Software und Apps zu senden oder zu empfangen.

Diese zweifach Funktion in der man etwas senden und etwas anderes erhalten kann macht es interessant diese Funktion in den eigenen Workflow einzubringen und die Produktivität zu steigern.

Das richtige coole ist, dass Du nur einen Texteditor benötigst um x-Callback zu nutzen, denn Du kannst den fertigen „Code“ als URL in jeden Browser ausführen lassen - daher auch der Zusatz „URL“ im Namen.

Dein Browser wird Dich fragen, ob er die Anwendung starten soll, wenn diese installiert ist:

Weiterhin kannst Du auch Links überall erstellen und diese Funktion als URL-Link verwenden.

Leider konnte ich bisher nichts finden wofür das „X“ in x-Callback steht. Vermutlich steht es für „execute“ also Ausführen.

Wenn Du mehr weißt, dann lass es uns wissen!

Wofür verwendet man diese Funktion nun?

Dies kommt auf zwei Komponenten an:

  • inwieweit die „Tür“ der App oder Software geöffnet wurde
  • auf die eigenen Bedürfnisse.

Immer mehr Apps werden mit dieser Funktion ausgestattet und das macht vor allem unter IOS viel Sinn. Denn es spart nicht nur Zeit und Klicks, sondern es ist einfach zu bedienen.

Du brauchst auch nicht mehr hin-und-her springen zwischen Deinen Apps und Dein Workflow wird nicht gestört oder aber auch es entfällt, dass Du wieder zum Home-Screen gehen musst um eine App zu öffnen und dort etwas zu suchen um im Nachhinein wieder zur ersten App zu gehen.

Hier ein paar Beispiele was Du mit der Funktion machen kannst:

Beispiel (Einweg-Funktion)

  1. Kalender aufrufen und die nächsten Ereignisse anzeigen lassen
  2. E-Mails automatisch erstellen und versenden
  3. Daten suchen in einer Datenbank und die Ergebnisse anzeigen lassen
  4. Erstellen einer Datei zum Beispiel Screenshots, PDF, Pages und vieles mehr.

Ja super! Soweit hierzu aber die Funktion kann ja auch etwas zurückschicken und dann wird es interessant.

Beispiel (Zwei-Wege-Funktion)

Ein kleines Szenario für IOS oder MAC:

Ich schreibe mit Ulysses einen Text und surfe zusätzlich im Internet um bestimmte Daten für meinen Text zu finden. Das geht ganz gut unter IOS mit dem Screen-Split wo beide Apps gleichzeitig angezeigt werden können.

Normalerweise würde ich jetzt einfach die URL nehmen und in Ulysses als Referenz eintragen.

Was ist aber wenn ich in diesem Setup jetzt noch DTTG nutzen möchte um ein Dokument in Ulysses zu verlinken?

Die erste Möglichkeit wäre wohl den Browser mit DTTG zu „ersetzten“ und die zweite auf dem Homebildschirm zu gehen um DTTG zu öffnen.

Wäre es nicht sinnvoller gleich ein Suchmaske in Ulysses angezeigt zu bekommen - zu suchen und das gewünschte Dokument in Ulysses einfügen zu lassen, ohne DTTG zu öffnen oder auf den Hauptbildschirm zu gehen?

Wenn DTTG schon mein Dokumentenverwaltungsprogramm ist, wäre es nicht auch sinnvoll den Link aus dem Browser dorthin zu speichern, so dass alles an einem Ort ist?

Später möchte ich noch vier Schnappschüsse machen, welche direkt und ohne zu tun in Ulysses eingetragen werden sollen und auch in DTTG gespeichert werden.

Noch später arbeite ich in Numbers und merke das der Verweis eigentlich zu meinen Text in Ulysses gehört und dort eingetragen werden soll.

Beispiel (Mehr-Wege-Funktion verschachtelt):

Ein anderes Szenario ist:

Ich fotografiere ein wichtiges Dokument mit meinem Smartphone ab, welches ich später zu einer Besprechung brauche.

Mit x-Callback kann ich in einem Rutsch folgendes tun:

  1. Fotografiere und benenne die Datei
  2. Schick sie zu DTTG
  3. Nimm den Link von DTTG und
  4. schick ihn zu meinem Kalender für den ‚Termin xyz oder als Todo.

Mit x-Callback sind diese drei Beispiele und noch vieles mehr möglich, ohne umständlich in jede einzelne App gehen zu müssen.

Diese Funktion ist also die Zeitersparnis schlechthin und Du kannst diese sogar im Browser als Lesezeichen speichern von dort direkt ausführen oder wie ich schon erwähnte in Workflow.is speichern und als Widget oder im Teile-Menu abrufen.

Somit ist der Gebrauch von x-Callback nur an zwei Grenzen gesetzt:

  • von der APP bzw. Entwickler
  • Was Du möchtest - Deine Ideen!

Nutzung

Die Funktion fängt meistens mit:

x-AppName://Befehl:?Was ist zu tun

an. Für DTTG zum Beispiel wird x-devonthink:// verwendet.

Der Nachteil, wie ich finde, ist das die Funktion (noch nicht) vereinheitlicht ist, dass heißt das Entwickler entscheiden welche Funktionen sie freigeben und mit welchen „Kommandos“ sie diese Funktion unterstützen.

Vielfach wird die folgende Struktur genommen:

  • x-source
    Welche Quelle angesprochen werden, d.h. welche App
  • x-success
    Welches Ergebnis angezeigt oder ausgeführt werden soll, wenn alles erfolgreich verlaufen ist
  • x- error
    Was passiert bei einem Fehler
  • x-Cancel
    Wie wird die Prozedur gestoppt.

Allerdings ist dies nicht bei jeder App bzw. Programm so.

Auch die Struktur der Daten ist unterschiedlich aufgrund was die App eigentlich macht. So ist zum Beispiel „Neue Datei“ nicht gleich „Neue Datei“ in einer anderen App.

  • DTTG:
    Was für eine neue Datei? Text und in welcher Art, Bilder, Video, Audio?
  • Ulysses:
    Neue Gruppe oder neues Blatt?
  • ByWord
    Erstellt eine neue Datei
  • 1Writer:
    Nutzt nicht „New“ sondern create
  • 2Do:
    Ist es addNewTask.
  • Working Copy
    Ist es write oder read

Also unterschiedliche Apps und Programme haben unterschiedliche Kommandos und Strukturen und es kommt auch darauf an für was die App eigentlich gedacht ist.

Es gibt meistens bei den Entwicklern selbst eine Anleitung (Bauplan) , wie sie die x-Callback Funktion verwenden und das die Struktur (Syntax) ist.

Planung der x-callback Funktion

Auch hier ist es wichtig zu wissen:

  • was man erreichen möchte
  • welche Apps mit welcher „sprechen“ sollen und
  • ob es eventuell ein „Standard“-Workflow gibt oder geben könnte.

Mit letzterem meine ich, kann man etwas Standardisieren oder benötigt man noch Nutzereingabe. Brauchst Du noch Eingaben? Kein Problem Du kannst das mit der x-Callback Funktion bewerkstelligen.

Wie man hier schon sehen kann, kann man fast alle Apps unter IOS und MAC nutzen aber wohin mit dem Code für IOS?

Daher nutze ich gern Workflow.is welches es im App Store kostenlos gibt. Es bietet viele andere Funktionen, welche nicht unbedingt auf x-Callback basieren und in einem WYSIWYG Editor verfügbar sind. f

Ein weiterer Vorteil von Workflow.is ist, dass Du den fertigen „Code“ entweder im Teilen-Menu oder als Widget anzeigen lassen kannst. Somit ist dieser sofort zur Verfügung - besonders nützlich unter IOS.

Für alle anderen (nicht verfügbaren Möglichkeiten) nutze einfach x-Callback und generiere Deinen Workflow mit Workflow.is. Es gibt noch LaunchPad und andere, welche mich allerdings nicht überzeugen konnten.

Den Code „stricken“

So wie richtiges Stricken nach einem „Bauplan“ geht, wird auch unser Code gestrickt. Dieser Bauplan ist dann abhängig von dem was der Entwickler freigegeben hat und welche Funktionen (Befehle) möglich sind.

Als erstes gilt, dass es immer mit x-App Name anfängt, also

x-devonthink:// für DTTG oder DevonThinkProOffice.

Das nächste wäre was zu tun ist, z.B. eine html Datei erstellen:

x-devonthink://createtext?

Das Fragezeichen dient bei DevonThinkProOffice als „Trenner“.

Die Datei soll auch einen Titel erhalten zum Beispiel „Mein erster Test“

x-devonthink://createtext?title“Mein erster Test“.

Jetzt fehlt noch der Inhalt „Meine erster Test mit DTTG und x-CallBack“

x-devonthink://createtext?title=Mein erster Test&text=Mein erster Test mit DTTG und x-Callback!

Bei dieser Abfrage in einem Browser (Copy und Paste) zum Beispiel, wirst Du noch nach der Speicherung gefragt und danach hast Du eine Textdatei mit dem Name „Mein erster Test“ und dem Inhalt „Mein erster Test mit DTTG und x-Callback!“ in DevonThinkProOffice oder eben DTTG.

Der Code muss nicht nochmals abgeändert werden und funktioniert unter MAC und IOS.

Stelle Dir jetzt vor das beide Angaben Variablen sind die vorher übergeben würden.

So ist es jetzt möglich eine Textdatei mit verschiedensten Möglichkeiten für Text und Titel zu erstellen.

Allerdings geht x-Callback noch weiter…. Neben diesen zwei kann DTTG auch:

Erstellen von:

  • Clips
  • Lesezeichen
  • Dokumenten
  • Gruppen
  • Bildern
  • Markdown Dokument
  • Webarchiv
  • Importieren der Zwischenablage und

Anweisung für:

  • In welche Datenbank und welchen Ordner und Gruppe es gespeichert werden soll
  • Kommentare einfügen

Zurückgeben von:

  • Suchen von Daten in allen oder bestimmte Datenbank
  • den Verweis kopieren und in eine andere App einfügen und vielem mehr.

Also es lohnt sich wirklich die x-Callback Funktion zu nutzen.

Eine erweiterte Funktion, welche mir von meiner Leserin Els - Vielen Dank hierfür - zu gesandt wurde, ist die das eine E-Mail von AirMail als HTML-Datei in DTTG erstellt wird.

Hier ist der Code:

x-devonthink://createhtml?title=[message_subject]&source=%3Cp%3E%3Cstrong%3EFrom%3A%3C%2Fstrong%3E%20%3Ca%20href%3D%22mailto%3A[message_sender]%22%3E[message_sender_name]%3C%2Fa%3E%3Cbr%2F%3E%0A%3Cstrong%3ESubject%3A%3C%2Fstrong%3E%20[message_subject]%3Cbr%2F%3E%0A%3Cstrong%3ELink%3A%3C%2Fstrong%3E%20%3Ca%20href%3D%22[message_linkback]%22%3E[message_linkback]%3C%2Fa%3E%20%3C%2Fp%3E%0A%0A%3Cp%3E[message_html]%3C%2Fp%3E

Wichtig: Bevor Du etwas ausführst

Ganz wichtig zu wissen ist, das es CODE ist der somit ausführbare Anweisungen erhält.

Eine falsch konfigurierte URL kann unter Umständen:

  • Löschen
  • Daten ändern die nicht geändert werden sollten
  • Absturz der App (in ganz schlimmen Fällen)

verursachen.

Um diesen Umständen entgegenzuwirken macht es Sinn, dass diese URL:

  • Stück für Stück gestrickt wirdAlso zum Beispiel fängst Du an, dass Programm/App aufzurufen.
    Danach eine Anweisung, z.B. Erstelle eine Textdatei. Wenn das super funktioniert dann einen Titel eingeben lassen und so weiter.
  • TestumgebungEine Testumgebung ist wie bei allen Programmierarbeiten sinnvoll.Eine mögliche Variante ist zum Beispiel in DevonThinkProOffice eine neue Datenbank anzulegen, die zum Testen genutzt wird oder auch in 2Do eine neue Liste oder sogar ein neues Konto.
  • Erst wenn alle Wünsche richtig funktionierenkannst Du den Code in Deinen produktiven Workflow einbauen.

Funktionstüchtigkeit des Codes

Ein anderes, wichtiges Detail ist das nicht immer der Code überall funktioniert:

Zum Beispiel es gibt Nutzer A und B die ihre eigene Installation von DTPO und DTTG nutzen. Beide haben jeweils einen Ordner der „Testumgebung“ heißt, welcher in der gleich lautenden Datenbank gespeichert ist.

Nun möchtest Du eine PDF-Datei von einer Webseite in den Ordner Testumgebung direkt speichern.

Bei DevonThinkProOffice gilt hier nicht der Name des Ordners, Dokumentes oder Datenbank sondern die ein-eindeutige ID - die sogenannte UUID welche für die Funktion genutzt wird und diese kann bei Nutzer A und B unterschiedlich sein.

Daher ist es jetzt nicht gleich möglich das Nutzer A und Nutzer B einfach die gleiche URL verwenden, sondern müssen die UUID ändern, damit die Datei auch wirklich im korrekten Ordner landet.

Dies gilt nicht, wenn Nutzer A und B zusammen synchronisieren - wie zum Beispiel DTPO mit DTTG dann sind diese IDs gleich und somit kann auf dem MAC der gleiche Code wie unter IOS eingesetzt werden.

Vorsicht beim Tauschen von Code der Eingaben des Nutzers anfordert

Dies gilt für jegliche Programmierung und ist wirklich ein generelles Thema welches berücksichtigt werden muss, wenn Apps, Programme oder eben auch Code getauscht werden.

Natürlich ist es möglich Abfragen wie :

  • Name einer Datei
  • Text in der Datei
  • Datum und Zeit
  • Priorität zum Beispiel bei Terminen und ToDos etc.

zu erstellen und danach als Variablen in den x-Callback Code einzufügen.

Das funktioniert soweit die Nutzer auch wissen, wie sie etwas einzugeben haben. Zum veranschaulichen nehme ich einfach mal das Datum von heute: Dienstag, 09. Mai 2017 :

  • 20170509
  • 2017-05-09
  • Di, 09. Mai 2017
  • Di, 09.05.17 und so weiter.

Eine Abfrage muss aber in einem gewissen Format verfügbar sein, so dass unterschiedliche Nutzer diese unterschiedlich eingeben werden, welches dann zu Fehlern beim Ausführen des Codes führt und das Zielprogramm damit nichts anzufangen weiß.

Um solche Format-Fehler von vornherein zu umgehen und auszuschließen schlage ich folgendes vor:

  • Eingabe über TextZum Beispiel: Heute, Morgen, in vier TagenDiese Eingaben kann ich umrechnen lassen, so dass das richtige Format am Ende zur Verfügung steht.
  • Eingabe über Einbinden anderer AppsEs ist auch möglich einen Kalender einblenden zu lassen, aus dem dann das Datum und die Uhrzeit gewählt werden.
  • FestsetzenDas gleiche gilt für Uhrzeiten, welche auch festgesetzt werden können (z.B. 11 Uhr im Format 11:00).
  • Dokumentation und AnzeigeDie letzte Möglichkeit ist, dem Nutzer mitzuteilen wie die Eingabe zu erfolgen hat. Ob er es dann tut? Das kann man nur mit einem nachträglichen Test herausfinden und gegebenenfalls den Nutzer nochmals Auffordern die Eingabe im richtigen Format durchzuführen.

Vom Nutzer abhängig

Also manche Dinge sind wirklich Nutzer-spezifisch und daher sollte man vorsichtig beim Tauschen sein.

Möchtest Du den x-Callback „nur“ für Deinen Workflow erstellen und dort auch nutzen, brauchst Du Dir um eine eventuelle Dokumentation keine Gedanken zu machen, denn Du selbst weißt, wie und was einzutragen ist.

Wie Du an diesem kleinen Beispielen sehen kannst eröffnen sich völlig neue Möglichkeiten besonders unter IOS arbeiten zu können.

Wenn ich Dir jetzt noch sage, dass:

  • AirMail
  • 2Do
  • Ulysses
  • BusyCal
  • Workflow.is und viele andere

diese Funktion beherrschen, dann kannst Du Dir vorstellen das Deine Produktivität stark steigen wird und Deinen bisherigen Workflow revolutionieren kann.

Für die oben stehenden Apps habe ich eine Download-Datei angefertigt, welche Dokumente erstellt. Hier kannst Du sie hier herunterladen:

Nimm einfach den Code und setze ihn in Deinen Browser ein.

Möchtest Du mehr erfahren und nicht warten wollen sind die folgenden zwei Webseiten ein guter Startpunkt:

MacStories , Funktions-Guidline und für DTPO kannst Du hier Infos finden.

Letztere ist von Agil Tortoise geschrieben. Kennst Du nicht? Doch kennst DU: Entwickler von Drafts, Terminology, Interact, Interact Scratchpad, Tally, Diced für IOS!

In meinen nächsten Tutorials geht es dann um bestimmte Apps und Programme und wie der Code dort zu „stricken“ ist.

Dein Favorit soll zuerst veröffentlicht werden? Dann sag doch bitte über die Kommentarfunktion einfach Bescheid!

 

How To Do: Der Workflow

DevonThink: Konvertiere Deine Daten mit Leichtigkeit oder nutze einfach Text

ZoomNotes: 10 Erweiterte Funktionen zum produktiven papierlosen Scheiben

 

c