Homemade Source/Templater snippets
[Templater] 옵시디언 문서의 update 날짜 자동 갱신하기
반응형
옵시디언 문서의 update 날짜 자동 갱신하는 Templater snippet입니다.
기능
created 및 updated 항목 추가
문서에 프로퍼티가 없거나 updated 항목이 없는 경우, created 및 updated 항목을 프로퍼티에 추가합니다.
현재 날짜와 시간으로 updated 항목 업데이트
문서의 프로퍼티에 updated 항목이 이미 존재하면, 현재 날짜와 시간으로 갱신합니다.
Templater Snippet
<%*
const KEY = 'updated';
const dateTimeFormat = "YYYY-MM-DD HH:mm";
const date = tp.date.now(dateTimeFormat);
const UPDATED = `${KEY}: ${date}`;
const editor = app.workspace.activeLeaf.view.editor;
const updatedFrontMatter = tp.frontmatter.updated;
if (updatedFrontMatter) {
const replaceLine = async (query, text) => {
let rowIndexFound = -1;
for (let row = 0; row <= editor.lastLine(); row++) {
if (editor.getLine(row).startsWith(query)) {
rowIndexFound = row;
break;
}
}
if (rowIndexFound !== -1) {
editor.replaceRange(
text,
{ line: rowIndexFound, ch: 0 },
{ line: rowIndexFound, ch: editor.getLine(rowIndexFound).length }
);
}
return rowIndexFound === -1 ? undefined : rowIndexFound;
};
const index = await replaceLine(KEY + ": ", UPDATED);
if (index !== undefined) {
new Notice("update 날짜와 시간을 업데이트하였습니다.");
} else {
new Notice("update 날짜와 시간을 업데이트하는데 실패하였습니다.");
}
} else {
const frontMatterBody = `
created: ${date}
updated: ${date}
`.trim();
const hasFrontMatter = Object.keys(tp.frontmatter).length > 0;
if (hasFrontMatter) {
const insertAfterLine = async (query, text) => {
let rowIndexFound = -1;
for (let row = 0; row <= editor.lastLine(); row++) {
if (editor.getLine(row) === query) {
rowIndexFound = row;
break;
}
}
if (rowIndexFound !== -1) {
editor.replaceRange("\n" + text, CodeMirror.Pos(rowIndexFound));
}
return rowIndexFound === -1 ? undefined : rowIndexFound + 1;
};
await insertAfterLine("---", frontMatterBody);
} else {
const insertFirst = async (text) => {
editor.replaceRange(text, CodeMirror.Pos(0, 0));
};
const noteBody = `---
${frontMatterBody}
---
`;
await insertFirst(noteBody);
}
}
%>
Templater로 작성한 명령어(스크립트)을 단축키로 실행하는 방법을 참고해주세요.
Commander에 빠른실행 등록하는 방법을 참고해주세요
관련 플러그인
반응형
'Homemade Source > Templater snippets' 카테고리의 다른 글
[Templater] 텍스트, 리스트, 체크박스 정렬하기 (0) | 2024.03.18 |
---|---|
[Templater] 선택된 영역에서 링크 삭제하기 (0) | 2024.03.14 |
[Templater] 오늘 생성한 노트의 목록을 데일리 노트에 출력하기 (0) | 2024.03.03 |
[Templater] 시간과 시계 이모지 출력하기 (0) | 2024.02.08 |
[Templater] 체크박스 정렬하기 (0) | 2024.02.06 |