For instance, I want to use tp.file.create_new()
inside either the devtools console or in a CustomJS script, even if I could do what those templater functions with the Obsidian API directly.
Yup, it’s possible by accessing the Obsidian API and digging inside the loaded plugins object.
Each plugin is stored in a map containing that plugin’s public API as follows:
app.vault.plugins.plugins["<the_plugin_name>"]
where the plugin name must be the same name as the plugin folder (so to access a specific plugin, find out in what folder it’s stored inside your .obsidian folder and use that name)
For a practical example:
// direct access to the "dv" dataview API
const dv = app.vault.plugins.plugins["dataview"].api
// direct access to the "tp" templater API
const templater = app.plugins.plugins["templater-obsidian"].templater;
const tp = templater.current_functions_object;
As you can see, each plugin provides a different entry point to its API, which can be found by inspecting its contents via the Obsidian Console.
Finally, here are some example basic use cases:
-
access Templater from within DataviewJS:
const templater = app.plugins.plugins["templater-obsidian"].templater; const tp = templater.current_functions_object; // print the current date inside a paragraph dv.el("p", tp.date.now());
-
access Dataview from within TemplaterJS:
<%* const dv = this.app.plugins.plugins["dataview"].api; let noteCount = dv.pages().length; // replace the template with the total number of notes tR += noteCount; %>
And to answer your other question, I have found out all this by using the Console
Have fun improving your Obsidian notes!