Templater API

Continuing the discussion from Is it possible to run a templater user script on a dataview code block?:

This way to access the API, also shown here by @AlanG is really nice.

Here is my code snippet:

        const tp = app.plugins.getPlugin("templater-obsidian").templater.current_functions_object
        if (!tp) {
            new Notice("Templater plugin not found. Make sure it is installed and enabled.");
        const templateFile = tp.file.find_tfile(templateName)
        if (!templateFile) {
            new Notice(`Template '${templateName}' not found`)
        await tp.file.create_new(templateFile, true, filePath)

Thing is, tp is undefined. Looking at the console log from this:



which doesn’t seem to have current_functions_object defined, and the file module I’m looking for is buried in a list. I can “dig” it out now that I know where to look, but it seems to me not a good way to do it as I will have to do it by index rather than name? And, TBH, I’m not sure if that “file” module is indeed the file module I am looking for :slight_smile:

Which version of Templater are you running, or what is the context of your script?

If I run the following:

const tp = app.plugins.plugins['templater-obsidian'].templater.current_functions_object

console.log("app...", app.plugins.plugins['templater-obsidian'])
console.log("tp", tp)

I’ll get the following output in the Console of Developer Tools:

As can be seen, the current_functions_object is present, and readily available for use by dataviewjs.

1 Like

Huh, that works perfectly.

For that matter, so does my original when stuck into a stand-alone dataviewjs block.

My original example was in a QuickAdd user script function. I wonder if that made the difference.

That could very well be the case, because there is a difference related to what is available when you’ve got an active editor leaf to work with, or not. I’ve gotten error messages from Templater when not having an active editor leaf, and I know that QuickAdd could still work at the same time (but I reckon with some limits).

Before I learned about needing to get an active leaf, I’ve accidentally had QuickAdd create a daily log in one of the sidebars :rofl:


In my case, that ‘current_functions_object’ is undefined until I use templater at least once. so I added startup template in templater settings. now ‘current_functions_object’ is always defined.


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.