Peux-tu m'envoyer tous les codes et fonctions util...

Tạo vào: 16 tháng 7, 2025

Trả lời bằng GPT-4.5 bởi Chat01

Câu hỏi

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 ?

Trình duyệt

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 ?")

Suy nghĩ

Thought for a couple of seconds

Trả lời

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 :


🔧 Fonctions internes (tp.xxx)

tp.date – manipulation de dates

  • tp.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 fichiers

  • tp.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 fichier
    • tp.file.move(new_path, file_to_move?) — déplacer
    • tp.file.rename(new_title) — renommer
    • tp.file.exists(filepath) / tp.file.find_tfile(filename) — vérifier/existence/recherche
    • tp.file.include(include_link) — insérer contenu d’un autre fichier
      GitHub Red Gregory

tp.frontmatter

  • tp.frontmatter.<key> ou tp.frontmatter["clé avec espaces"]
    Extraction des métadonnées YAML du fichier. GitHub Red Gregory

tp.system – interaction utilisateur & système

  • tp.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 internet


tp.obsidian – API Obsidian


tp.config, tp.app et tp.hooks

  • tp.config: consulte l’état du plugin (mode d’exécution, fichier cible, etc.). GitHub Red Gregory
  • tp.app: accès direct à l’application Obsidian (vault, plugins…). silentvoid13.github.io
  • tp.hooks.on_all_templates_executed(callback)
    Permet d’exécuter du code après chaque insertion de template. GitHub Red Gregory

🧩 Fonctions utilisateurs (tp.user)

Personnalisées via scripts JavaScript ou commandes système :

Script User Functions

  • Fichiers .js dans le dossier Templates > Script Folder dans les paramètres.
  • Exemple :
js
function 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


System Command User Functions

  • Définies dans la config Templater
  • Appellent des commandes système (ex. youtube-dl) et retournent leur sortie. silentvoid13.github.io Obsidian Forum
  • Ex. pour récupérer un titre vidéo : <% await tp.user.vidname(link) %> après link = await tp.system.prompt(...)

🧭 Syntaxe des commandes

  • <% expression %> : insère la valeur
  • <%* code JS asynchrone %> : exécute du JS, modifie tR pour ajouter du contenu GitHub Red Gregory
  • Contrôle des espaces/lignes :
    • <%_, _ %> : supprime tous les espaces autour
    • <%-, -%> : supprime une seule nouvelle ligne GitHub Red Gregory
  • <%+ … %> : exécute en mode aperçu dynamique (preview)

Exemples concrets

  • Lien vers demain et hier :
md
<< [[<% tp.date.now("YYYY-MM-DD", -1) %>]] | [[<% tp.date.now("YYYY-MM-DD", 1) %>]] >>

Red Gregory

  • Menu interactif :
md
<% tp.system.suggester(["Urgent","Moyen","Bas"], ["🔴","🟠","🟢"]) %>
  • Boucle JavaScript complexe :
js
<%* let arr = Array(12).map((_,i) => moment(tp.file.title,'YYYY').month(i) .format("- [[YYYY-MM]]") ).join("\n"); tR += arr; %>


📚 Résumé par tableau

ModuleFonctions clés
tp.datenow, tomorrow, weekday
tp.filetitle, creation_date, move, rename, content, include, etc.
tp.frontmatterExtraction frontmatter YAML
tp.systemclipboard, prompt, suggester
tp.webdaily_quote, random_picture
tp.obsidianrequestUrl, htmlToMarkdown, normalizePath, accès API
tp.config/hookConfigurs 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 !

Câu hỏi

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.

Trả lời

Voici un exemple précis de script Templater répondant exactement à ton besoin :

🎯 Objectif :

  • Créer une nouvelle note dans un dossier de ton choix.
  • Nom de note avec un préfixe personnalisé suivi d’un numéro qui s’incrémente automatiquement.
  • Ouverture automatique de la nouvelle note créée.

📌 Script détaillé avec explication :

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); %>

🧑‍💻 Comment fonctionne ce script ?

  1. Demande interactive :

    • Demande le préfixe du nom de la note via une fenêtre modale (tp.system.prompt).
    • Demande ensuite quel dossier utiliser parmi ceux proposés (tp.system.suggester).

    Personnalise la liste (["Dossier1", "Dossier2", ...]) avec tes propres noms de dossiers.

  2. Récupération des fichiers existants :

    • Utilise app.vault.getFiles() pour récupérer la liste complète.
    • Filtre uniquement ceux dans ton dossier choisi.
  3. Détermination automatique du numéro :

    • Parcourt les fichiers existants dans le dossier.
    • Utilise une expression régulière pour détecter les numéros à la fin des noms des fichiers existants.
    • Détermine le numéro maximal actuel.
  4. Création de la nouvelle note avec numéro incrémenté :

    • Ajoute automatiquement +1 au numéro maximal détecté.
    • Le nom est formaté clairement, ex. : Préfixe-001, Préfixe-002.
  5. Création et ouverture automatique :

    • Utilise tp.file.create_new() avec le dernier paramètre à true pour ouvrir immédiatement la nouvelle note.

📖 Exemple concret :

Imaginons que tu aies déjà les fichiers suivants dans ton dossier Notes de cours :

text
Notes-001.md Notes-002.md Notes-003.md

Si tu choisis :

  • Préfixe : Notes
  • Dossier : 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.


🚀 Comment installer et utiliser ce template :

  1. Ouvre Obsidian :

    • Va dans Paramètres → Plugins communautaires.
    • Vérifie que Templater est installé et activé.
  2. Crée un nouveau template :

    • Paramètres → Templater → Template Folder.
    • Dans ce dossier, crée une note avec le script ci-dessus (ex: NewIncrementalNote).
  3. Utilise le template :

    • Depuis n'importe quelle note : tape le raccourci pour insérer un template (Ctrl/Cmd + P → "Templater: Insert template").
    • Choisis NewIncrementalNote.
    • Suis les invites interactives pour choisir ton préfixe et ton dossier.

✨ Voilà ! Ton flux de création automatisé avec incrémentation des numéros est prêt.

Chia sẻ Q&A này