万分感谢!!!还有两问:
1-如果让let file 等于其他页面要怎么写呀?
我测试了把dv.current()改成dv.page(“文件夹名”)不行,求解~
2-如何把搜索出来的标题link回到页面的对象
回复老是出错不知怎么回事
dv.page(‘“文件夹名”’) "文件夹名"需要加一层单引号
你说的是对的,我看了别的文章也是这么说,
但是把它dv.page(‘“文件夹”’)在我的代码里,就不行。。
应该是代码冲突还是其他什么问题。。
——————以下是代码内容——————
1、获取当前页面的所有标题和关键词
```dataviewjs
const patentArray = app.metadataCache.getFileCache(dv.current().file).headings;
const headingArray = ["标题名称", "关键词"]
const patentContentArray = [];
const page = dv.current()
for(let i = 0; i < patentArray.length; i++) {
patentContentArray.push({
name: `[[#${patentArray[i].heading}]]`,
keyname: page["关键词"][i]
})
}
dv.table(headingArray, patentContentArray.map(
p => [
p.name,
p.keyname
]
))
```
这个搜索结果没有问题
2、获取其他某个页面上的所有标题和关键词
```dataviewjs
const patentArray = app.metadataCache.getFileCache(dv.page("文件名").file).headings;
const headingArray = ["标题名称", "关键词"]
const patentContentArray = [];
const page = dv.page("文件名")
for(let i = 0; i < patentArray.length; i++) {
patentContentArray.push({
name: `[[#${patentArray[i].heading}]]`,
keyname: page["关键词"][i]
})
}
dv.table(headingArray, patentContentArray.map(
p => [
p.name,
p.keyname
]
))
```
这搜索结果也没有问题
3、获取某个文件夹里面的所有文件的标题和关键词
```dataviewjs
const patentArray = app.metadataCache.getFileCache(dv.page('"文件夹名"').file).headings;
const headingArray = ["标题名称", "关键词"]
const patentContentArray = [];
const page = dv.page('"文件夹名"')
for(let i = 0; i < patentArray.length; i++) {
patentContentArray.push({
name: `[[#${patentArray[i].heading}]]`,
keyname: page["关键词"][i]
})
}
dv.table(headingArray, patentContentArray.map(
p => [
p.name,
p.keyname
]
))
```
这个显示不出来了,显示错误“Evaluation Error: TypeError: Cannot read properties of undefined (reading ‘file’)”
怎么获取某个文件夹下的所有文件,不仅有md文档,也有pdf、word等。
可以使用 app.vault.getFiles().filter(p=>p.path.includes('文件夹'))
的方法,不过这和 dv.pages()
返回的数组中的元素不一样,getFiles
返回的元素里面的属性是这样的
感谢大佬回复,才开始用ob,我想用dataview生成表格,把指定文件夹下的文档(非md格式)展示出来,能劳烦写个示例吗?
这样子吗
```dataviewjs
let files = app.vault.getFiles().filter(p=>p.path.includes('未命名') && p.extension!='md')
dv.table(['file'],files.map(p=>[`[[${p.path}|${p.basename}]]`]))
```
好的,多谢多谢!
app.vault.getFiles() 获取的文件如何排序?
你希望按什么排序
名称、创建时间、文档类型等这些。我尝试了没成功,有什么文档我能看着学一学吗?
排序的话可以这样
```dataviewjs
let files = app.vault.getFiles().filter(p=>p.path.includes('未命名') && p.extension!='md')
files = dv.array(files).sort(p=>p.basename) // 名字 p.stat.ctime创建时间 p.extension后缀
dv.table(['file'],files.map(p=>[`[[${p.path}|${p.basename}]]`]))
```
多谢多谢
可以请教一下如何将file.cday得到的内容转换成数字吗?
直接Number(a.file.cday),或a.file.cday.ts
因为看不懂,写的很好!
getFiles
返回元素的属性,您这个图片是在哪里截的图?ob里吗?
好的,谢谢大佬。