From 4e359c0fcb44d536a9e438447be5f287d6052adc Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 15:15:45 +0000 Subject: [PATCH 1/2] Make Obsidian templates robust: auto-create target folder, avoid name clash Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0171eYx2AScskQeycHYGGncm --- obsidian/README.md | 7 +++---- ...20\267\320\260 \320\264\320\265\320\275\321\214.md" | 10 +++++++++- ...320\275\320\265\320\262\320\275\320\270\320\272.md" | 10 +++++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/obsidian/README.md b/obsidian/README.md index 5f6e0cc..87c4c55 100644 --- a/obsidian/README.md +++ b/obsidian/README.md @@ -19,8 +19,7 @@ При создании заметка автоматически: -- перемещается в целевую папку (`инвестиции/дневник/` или `отчёты за день/`); -- получает имя по дате создания (`DD.MM.YYYY`); +- создаёт целевую папку (`инвестиции/дневник/` или `отчёты за день/`), если её ещё нет; +- перемещается в эту папку; +- получает имя по дате создания (`DD.MM.YYYY`); при конфликте имени добавляется время (`HH-mm`); - заполняет frontmatter (`date`, `type`, `tags`). - -> [!note] Целевая папка должна существовать в хранилище (vault) — Templater не создаёт промежуточные папки. diff --git "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" index 7762d01..0b76b2f 100644 --- "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" +++ "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" @@ -1,7 +1,15 @@ <%* // Кладём отчёт в папку «отчёты за день» и именуем по дате создания. const folder = "отчёты за день"; -const fileName = tp.date.now("DD.MM.YYYY"); +// Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). +if (!app.vault.getAbstractFileByPath(folder)) { + await app.vault.createFolder(folder); +} +// Если отчёт на сегодня уже есть — добавляем время, чтобы не было конфликта. +let fileName = tp.date.now("DD.MM.YYYY"); +if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) { + fileName += " " + tp.date.now("HH-mm"); +} await tp.file.move(`${folder}/${fileName}`); -%> --- diff --git "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" index f2f0425..56d702b 100644 --- "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" +++ "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" @@ -1,7 +1,15 @@ <%* // Кладём заметку в инвестиции/дневник и именуем по дате создания. const folder = "инвестиции/дневник"; -const fileName = tp.date.now("DD.MM.YYYY"); +// Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). +if (!app.vault.getAbstractFileByPath(folder)) { + await app.vault.createFolder(folder); +} +// Если заметка на сегодня уже есть — добавляем время, чтобы не было конфликта. +let fileName = tp.date.now("DD.MM.YYYY"); +if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) { + fileName += " " + tp.date.now("HH-mm"); +} await tp.file.move(`${folder}/${fileName}`); -%> --- From 1ae0e13cbef018e3ca8313b5b4c4671965a0a1b8 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 15:18:32 +0000 Subject: [PATCH 2/2] Fix Obsidian templates: ignore 'Folder already exists' via try/catch Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0171eYx2AScskQeycHYGGncm --- ...202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" | 5 +++-- ...0\264\320\275\320\265\320\262\320\275\320\270\320\272.md" | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" index 0b76b2f..4e2f660 100644 --- "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" +++ "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" @@ -2,9 +2,10 @@ // Кладём отчёт в папку «отчёты за день» и именуем по дате создания. const folder = "отчёты за день"; // Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). -if (!app.vault.getAbstractFileByPath(folder)) { +// Если папка уже существует — createFolder бросит ошибку, её игнорируем. +try { await app.vault.createFolder(folder); -} +} catch (e) { /* папка уже есть */ } // Если отчёт на сегодня уже есть — добавляем время, чтобы не было конфликта. let fileName = tp.date.now("DD.MM.YYYY"); if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) { diff --git "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" index 56d702b..817f752 100644 --- "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" +++ "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" @@ -2,9 +2,10 @@ // Кладём заметку в инвестиции/дневник и именуем по дате создания. const folder = "инвестиции/дневник"; // Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). -if (!app.vault.getAbstractFileByPath(folder)) { +// Если папка уже существует — createFolder бросит ошибку, её игнорируем. +try { await app.vault.createFolder(folder); -} +} catch (e) { /* папка уже есть */ } // Если заметка на сегодня уже есть — добавляем время, чтобы не было конфликта. let fileName = tp.date.now("DD.MM.YYYY"); if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) {