Peux-tu m'envoyer tous les codes et fonctions util...
Tạo vào: 16 tháng 7, 2025
Tạo vào: 16 tháng 7, 2025
Peux-tu m'envoyer tous les codes et fonctions utilisés dans l'application Templater pour Obsidian, avec un explication détaillée pour chacun d'eux ?
search("Peux-tu m'envoyer tous les codes et fonctions utilisés dans l'application Templater pour Obsidian, avec un explication détaillée pour chacun d'eux ?")
Voici un aperçu détaillé des fonctions internes et utilisateurs disponibles dans le plugin Templater pour Obsidian, avec leur rôle et des exemples explicatifs :
tp.xxx
)tp.date
– manipulation de datestp.date.now(format?: string, offset?: number|string, reference?: string, reference_format?: string)
Renvoie la date actuelle formatée, avec décalage (ex. -1
, "+3 days"
). GitHub
tp.date.tomorrow(format?: string)
/ tp.date.yesterday(format?: string)
Date d’hier ou demain formatée. GitHub Red Gregory
tp.date.weekday(format: string, weekday: number, reference?: string, reference_format?: string)
Renvoie le jour de la semaine (ex. lundi = 1) d’une date. GitHub Red Gregory
tp.file
– gestion des fichierstp.file.title
/ tp.file.folder()
/ tp.file.tags
Titre, répertoire, étiquettes du fichier courant. GitHub Red Gregory
tp.file.creation_date(format?: string)
/ tp.file.last_modified_date(format?: string)
Dates de création/modification formatées. GitHub Red Gregory
tp.file.content
, tp.file.selection()
, tp.file.cursor(order?: number)
Contenu complet, sélection, position du curseur. GitHub Red Gregory
Asynchrones :
tp.file.create_new(template, filename?, open_new?, folder?)
— créer un fichiertp.file.move(new_path, file_to_move?)
— déplacertp.file.rename(new_title)
— renommertp.file.exists(filepath)
/ tp.file.find_tfile(filename)
— vérifier/existence/recherchetp.file.include(include_link)
— insérer contenu d’un autre fichiertp.frontmatter
tp.frontmatter.<key>
ou tp.frontmatter["clé avec espaces"]
tp.system
– interaction utilisateur & systèmetp.system.clipboard()
Accès au contenu du presse-papiers. GitHub Red Gregory
tp.system.prompt(prompt_text, default_value?, throw_on_cancel?, multiline?)
Fenêtre modale de saisie de texte. GitHub Red Gregory
tp.system.suggester(text_items, items, throw_on_cancel?, placeholder?, limit?)
Menu de sélection contextuel. GitHub Red Gregory
tp.web
– accès internettp.web.daily_quote()
Citation du jour. silentvoid13.github.io GitHub
tp.web.random_picture(size?, query?, include_size?)
Image aléatoire depuis une source web. GitHub Red Gregory
tp.obsidian
– API Obsidiantp.obsidian.normalizePath(path)
Nettoie/normalise un chemin. silentvoid13.github.io
tp.obsidian.htmlToMarkdown(html)
Convertit HTML en Markdown. silentvoid13.github.io
tp.obsidian.requestUrl(url)
Requête HTTP asynchrone (renvoie JSON/texte). silentvoid13.github.io
Accès à l’API Obsidian, p.ex. app.vault.getAllLoadedFiles()
pour lister les dossiers. silentvoid13.github.io
tp.config
, tp.app
et tp.hooks
tp.config
: consulte l’état du plugin (mode d’exécution, fichier cible, etc.). GitHub Red Gregorytp.app
: accès direct à l’application Obsidian (vault, plugins…). silentvoid13.github.iotp.hooks.on_all_templates_executed(callback)
tp.user
)Personnalisées via scripts JavaScript ou commandes système :
.js
dans le dossier Templates > Script Folder
dans les paramètres.jsfunction my_function(msg) { return `Message : ${msg}`; } module.exports = my_function;
Dans un template :
md<% tp.user.my_function("Salut !") %>
On peut aussi passer tp
en argument :
md<% tp.user.my_script(tp) %>
Permet d’utiliser tout l’environnement Templater dans le script. silentvoid13.github.io
youtube-dl
) et retournent leur sortie. silentvoid13.github.io Obsidian Forum<% await tp.user.vidname(link) %>
après link = await tp.system.prompt(...)
<% expression %>
: insère la valeur<%* code JS asynchrone %>
: exécute du JS, modifie tR
pour ajouter du contenu GitHub Red Gregory<%_
, _ %>
: supprime tous les espaces autour<%-
, -%>
: supprime une seule nouvelle ligne GitHub Red Gregory<%+ … %>
: exécute en mode aperçu dynamique (preview)md<< [[<% tp.date.now("YYYY-MM-DD", -1) %>]] | [[<% tp.date.now("YYYY-MM-DD", 1) %>]] >>
md<% tp.system.suggester(["Urgent","Moyen","Bas"], ["🔴","🟠","🟢"]) %>
js<%* let arr = Array(12).map((_,i) => moment(tp.file.title,'YYYY').month(i) .format("- [[YYYY-MM]]") ).join("\n"); tR += arr; %>
Module | Fonctions clés |
---|---|
tp.date | now , tomorrow , weekday |
tp.file | title , creation_date , move , rename , content , include , etc. |
tp.frontmatter | Extraction frontmatter YAML |
tp.system | clipboard , prompt , suggester |
tp.web | daily_quote , random_picture |
tp.obsidian | requestUrl , htmlToMarkdown , normalizePath , accès API |
tp.config/hook | Configurs du plugin, hook post-exécution |
tp.user (scripts) | Fonctions personnalisées, accès JS & tp via require |
tp.user (system) | Commandes shell, sorties système |
Si tu veux que je te transmette les scripts complets ou des templates spécifiques, n’hésite pas à me le demander !
Je veux créer une nouvelle note dans un dossier que j'ai choisi avec un nom que je lui donne, qui s'incrémente d'un chiffre à chaque nouvelle note, avec ouverture de cette nouvelle note.
Voici un exemple précis de script Templater répondant exactement à ton besoin :
🎯 Objectif :
Ajoute ceci à un template Templater dans Obsidian (Gestionnaire Templates → Nouveau
) :
js<%* const prefix = await tp.system.prompt("Quel est le préfixe du nom de ta note ?"); const folder = await tp.system.suggester(["Dossier1", "Dossier2", "Dossier3"], ["Dossier1", "Dossier2", "Dossier3"], false, "Choisis le dossier :"); // récupère tous les fichiers du dossier choisi : const folderFiles = app.vault.getFiles().filter(f => f.path.startsWith(folder + "/")); // détermine le prochain numéro en extrayant le chiffre final : let maxNum = 0; const regex = new RegExp(`^${prefix}-(\\d+)`); folderFiles.forEach(f => { const match = f.basename.match(regex); if (match) { const num = parseInt(match[1], 10); if (num > maxNum) maxNum = num; } }); // définit le nouveau nom avec numéro incrémenté : const newNum = maxNum + 1; const newFileName = `${prefix}-${String(newNum).padStart(3, '0')}`; // ex. Note-001, Note-002 // crée et ouvre la note immédiatement : await tp.file.create_new("", newFileName, true, folder); %>
Demande interactive :
tp.system.prompt
).tp.system.suggester
).Personnalise la liste (["Dossier1", "Dossier2", ...]
) avec tes propres noms de dossiers.
Récupération des fichiers existants :
app.vault.getFiles()
pour récupérer la liste complète.Détermination automatique du numéro :
Création de la nouvelle note avec numéro incrémenté :
+1
au numéro maximal détecté.Préfixe-001
, Préfixe-002
.Création et ouverture automatique :
tp.file.create_new()
avec le dernier paramètre à true
pour ouvrir immédiatement la nouvelle note.Imaginons que tu aies déjà les fichiers suivants dans ton dossier Notes de cours
:
textNotes-001.md Notes-002.md Notes-003.md
Si tu choisis :
Notes
Notes de cours
Le script va automatiquement créer un fichier nommé :
Notes-004.md
et l'ouvrir immédiatement pour que tu commences à écrire.
Ouvre Obsidian :
Crée un nouveau template :
Paramètres → Templater → Template Folder
.NewIncrementalNote
).Utilise le template :
Ctrl/Cmd + P → "Templater: Insert template"
).NewIncrementalNote
.✨ Voilà ! Ton flux de création automatisé avec incrémentation des numéros est prêt.