roitium
(roitium)
2
翻了下 obsidian api,发现有一个 getAllFolders 方法,那应该就可以通过 tp.app.vault.getAllFolders()
来获取所有文件夹。
另外「提示想要存放到哪个文件夹」这个功能真的能做到吗?我印象中 Obsidian 的命令面板没法加多层交互吧。
1 Like
wy_bjj
(didingqd)
3

我暂时使用的是最基本的选择语句,但是我如果创建了新文件夹,需要手动添加才能去选择,所以才想用脚本直接去获取,具体我也不是特别清楚,这样已经能做到我想要的功能,就是需要我一个一个去添加,所以想改进一下
wy_bjj
(didingqd)
5
<%*
let title = tp.file.title;
if (title.startsWith ("未命名")) {
title = await tp.system.prompt ("输入笔记标题名");
}
if (title == "") {
title = "笔记 "+ tp.date.now ("Y-M-D HH mm ss");
}
else {
await tp.file.rename (title);
};
const choice = await tp.system.suggester (["00笔记-No Action", "01笔记-记录", "02笔记-阅读","03日记","模板"],["00笔记-No Action", "01笔记-记录", "02笔记-阅读","03日记","模板"]);
let output = ""
switch (choice) {
case "00笔记-No Action":
await tp.file.move ("/00笔记-No Action/" + title);
output = await tp.file.include ("[[01普通笔记模板]]")
break;
case "01笔记-记录":
await tp.file.move ("/01笔记-记录/" + title);
output = await tp.file.include ("[[01普通笔记模板]]");
break;
case "02笔记-阅读":
await tp.file.move ("/02笔记-阅读/" + title);
output = await tp.file.include ("[[01普通笔记模板]]");
break;
case "03日记":
await tp.file.move ("/03日记/" + title);
output = await tp.file.include ("[[02日记模板]]");
break;
case "模板":
await tp.file.move ("/模板/" + title);
output = await tp.file.include ("[[03模板的模板]]");
break;
default:
new Notice ("No");
};
tR += output
%>
你看这个算是实现交互了吗?
1 Like
wy_bjj
(didingqd)
7
,是这样的,仅仅是实现了半自动,文件夹少还好说,多了这代码根本扛不住的
Atomesh
(Atomesh)
8
不要局限于 tp 自身的 api,templater 最大的自由度就是可以使用任意代码
我给你两个文件参考一下,里面展示所有文件夹我使用的是递归,你可以用上面的人给你指路的 API,里面有些不明所以的封装和代码(这个就别学了,当时瞎写的),你看个思路就行,这个代码是好久以前的了,我已经不用了,不行就用 GPT,让它解释下,以及多查官方的 API 文档,里面有很多好东西
Templater_Dynamic_Function.txt (7.8 KB)
Obsidian_Function.txt (4.4 KB)
自己改下后缀,论坛不允许上传 js