logo
/
💿❌obsidian - 保存ごとにfrontmatterに日付を入れる
2025-01-28
Templaterを使って、hotkeyでfrontmatter(日付など用意したもの)を挿入&更新することはできる
しかし、更新忘れが多々あるので、保存を押すごとに自動で変わっていってほしい
Obsidian Linterがセーブごとに走るのであれば、同様のことは出来てもおかしくはない
Loading...

That plugin hasn't been updated in a while and seems to have a major bug. Linter may be a better choice for an out-of-the-box solution.

これが直接言及しているわけではないが、確かにObsidian Linterにpost script的な機能はありそう
→ あった
attachments/Pasted image 20250128001736.png

保存時に動いてほしくない場合もある

過去記事のタイポや設定を直したいだけで、更新時間は変えたくないなど
なんだかんだ結局能動的なホットキーの方が良さそう(なんだったんだ...)

P.S 一応templater scriptもここに転機しておく

frontmatter_date
<%*
// Front matterのキー
const KEY = 'updated'
// 値の日時フォーマット
const date = tp.date.now("YYYY-MM-DD")
const UPDATED = `${KEY}: ${date}`

const editor = app.workspace.activeLeaf.view.editor

const updatedFrontMatter = tp.frontmatter.updated
if (updatedFrontMatter) {
  const index = await tp.user.replace_line_at_word_starts(KEY + ": ", UPDATED)
  if (index !== undefined) {
    new Notice("最終更新日を更新しました")
  } else {
    new Notice("最終更新日を更新しようとしましたが失敗しました")
  }
  return
}

const frontMatterBody = `
created: ${date}
${KEY}: ${date}
`.trim()

const hasFrontMatter = Object.keys(tp.frontmatter).length > 0
if (hasFrontMatter) {
  await tp.user.insert_new_line_at_word_found("---", frontMatterBody)
  return
}

const noteBody = `---
${frontMatterBody}
---
`
await tp.user.insert_new_line_at_first(noteBody)
%>