3rd party Integration

Something for the future (I expect other work has priority, such as the iOS version)

I have been thinking about better integration with other applications through URLs. Many apps provide a URL interface to receive information, or commands, and to act on these. The problem is that they all use different URL schemes (I do not think that Apple has specified rules or scheme guidelines as a standard).

It is not realistic to expect from Agenda to be able to talk to all other applications.

However, there may be a solution to this: include a URL constructor in the preferences of Agenda, and use the Share menu to send URLs to other applications.

The URL constructor would provide the user with the means to construct a URL to be sent to an other application. Let me give an example to make this clearer: you want send a note as a item from Agenda to Things.

The note has a title “URL Builder in Agenda”, a content “just an idea” and a date of April 1, 2018.

From the Things scheme reference you find out that the URL has to look something like this, for Things to understand:

things:///add?title=URL%20Builder%20in%20Agenda&notes=Just%20an%20idea&when=1-4-2018

But how should Agenda know how this URL would have to look like? Answer: you (the user) tells Agenda once how this URL should be.

In preference you create a new es you create a new ‘Share to Things’ definition of the URL to be used. You construct this from a mixture of just text for the fixed parts, and variables that represent information that Agenda knows about. Example of these are a note title, the note text, the project, the date and so on. In this example. Lets represent these variable items by keyword in square brackets, like [date], or [title], or [NoteText].

In the Agenda preference you would then define this Share to Things URL definion (in plain text) as:

things:///add?title=[title]&notes=[NoteText]&when=[date]

Whet you save this definition as Share to Things, it should appear in the Share menu of Agenda.

To use this, to send a specific note from Agenda to Things, select the note in Agenda, and select Share to things from Agenda’s Share menu. Agenda then replaces the variable parts from the URL definiton (in square brackets, like [NoteText]) by the actual contents of the note (like Just%20an%20idea), and fires off this URL to be handled by Things.

This way of defining an interface in plain text is similar to defining the ‘Then’ part of an action in the if-this-then-that service on the Internet.

Of course, this can be refined further, e.g. by a standard way to obtain the scheme that an app understands, it could be shown when the user defines an URL (simlar to a dictionary in AppleScript). But this means that developers would have to agree on a standard…

I am wondering what the community members (and of course the Agenda developers) think about this idea …