Obsidian Templater 批量新建笔记
背景
工作中的新项目都有这么几个固定的笔记,比如项目背景、原理图设计、PCB设计、调试等,每个笔记文件又有一些固定的内容,想着在开始一个新项目时,一次性把这些笔记都建好,并且统一命名,工作过程中把笔记整理到对应文件中,便于查找。
当然可以用windows或linux的脚本来做,但是在Obsidian中有更方便的实现方法,那就是Templater插件。
其实就用到了两个函数:接收输入、新建笔记。
准备
- 安装Templater,设置Template所在的文件夹。
- 准备好各个笔记的模板
新建笔记模板
总之这个模板的作用是:新建一批其他笔记,并给每个笔记分配对应模板。create_project_files.md
<%*
let ProjName = await tp.system.prompt("Enter project name eg Project1:")
-%>
<% await tp.file.create_new(tp.file.find_tfile("背景资料"), "00-"+ProjName+"背景资料", false) %>
<% await tp.file.create_new(tp.file.find_tfile("原理图设计"), "01-"+ProjName+"原理图设计", false) %>
<% await tp.file.create_new(tp.file.find_tfile("调试"), "02-"+ProjName+"调试", false) %>
使用变量
Obsidian Templater Fun - Macdrifter
需要Eta code block,<%* code -%>
,(没仔细看具体是什么,反正这样能用变量)。
<%*
let ProjName = await tp.system.prompt("Enter project name eg Project1:")
-%>
tp.system.prompt
接收键盘输入,比如用于输入项目名称。
tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)
仅使用了prompt_text
,就是给了一些提示文字,比如:Enter project name eg Project1:
。其他默认。
tp.file.create_new
tp.file.create_new(template: TFile ⎮ string, filename?: string, open_new: boolean = false, folder?: TFolder)
4个参数:
- 模板文件名(或者是用
tp.file.find_tfile
搜索返回的TFile
类型) - 新建笔记名(后缀是
.md
),比如"00-ProjName背景资料"
- open_new:立即打开新建的笔记,设置
false
,不打开。 - Folder,不填,默认是当前文件夹
效果展示
有个小问题,就是完成以后,多了一个untitled笔记(因为使用templater需要一个打开的笔记,这个模板需要使用目标文件夹下的一个笔记文件,比如untitled.md
),也可以用Templateri重命名或者移到别的地方去。暂时不改了,手动删除。
参考资料
Templater 官方文档:Introduction - Templater (silentvoid13.github.io)
一个博客:Automation with Templater for Obsidian | ThoughtAsylum
另外一个博客:Obsidian Templater Fun - Macdrifter
Batch脚本
同样,windows下,也可以用batch脚本来实现差不多的功能。最近也简单写了一个batch脚本,建好项目需要的各个文件夹,并把各个文档的模板放到对应位置,并重命名。
- 目前脚本和模板
template.docx
放在同一个目录
@echo off
set /p projName=输入项目名称,如board1:
md %projName%
md %projName%\00-背景
md %projName%\01-原理图设计
copy /y template.docx %projName%\01-原理图设计\%projName%原理图设计文档.docx
echo 项目文件夹%projName%新建完成!
pause