Dataview讓我們將筆記當成資料來查詢,但查詢出來的表格卻無法搜尋、無法複製再利用。今天分享一個使用Dataviewjs來產生表格與Copy按鈕的作法:
-
以Dataviewjs查詢出表格
-
在表格下方產生一個【Copy】按鈕
-
點擊【Copy】按鈕後,將Dataview表格轉換成Markdown表格,並複製到系統剪貼簿
-
到需要插入Markdown表格的位置按Ctrl+V
1. Dataviewjs
let dataArray = dv.pages('')
.where(page => (dv.date("today") - page.file.mday <= dv.duration("1days")))
.sort(page => page.file.mday, "desc")
.map(page => [page.file.link, page.type, page.tags,
page.file.cday, page.file.mday]);
dv.table(["File", "Type", "Tags", "Created", "Modified"], dataArray);
const button = dv.el("button", "Copy");
button.onclick = function() {
new Notice("Dataview content copy to clipboard!");
let md_text = dv.markdownTable(["File("+dataArray.length+")", "Type", "tags",
"Created", "Modified"], dataArray);
navigator.clipboard.writeText(md_text);
dv.paragraph(md_text);
}
1.1. 本日建立或修改的筆記
let dataArray = dv.pages('')
.where(page => (dv.date("today") - page.file.cday <= dv.duration("3 days")))
.sort(page => page.file.cday, "desc")
.map(page => [page.file.link, page.type, page.file.cday]);
dv.table(["文件名", "文件类型", "修改时间"], dataArray);
const button = dv.el("button", "Copy");
button.onclick = function() {
new Notice("Dataview content copy to clipboard!");
let md_text = dv.markdownTable(["File("+dataArray.length+")", "Type",
"Created", "Modified"], dataArray);
navigator.clipboard.writeText(md_text);
}
▼ 測試
2. 簡單點的範例
table type, created
from #test
-
dv.pages(來源)
:傳回符合條件的筆記物件陣列 -
page
是傳入的一個筆記物件 -
page.type
是取出YAML區的type欄位 -
page.file.link
是筆記物件的file屬性,file代表作業系統的檔案物件 -
dv.table([標題陣列], 資料陣列)
生成Dataview表格 -
dv.el
建立HTML標籤 -
dv.markdownTable([標題陣列], 資料陣列)
生成Markdown格式的Dataview表格
本库教程生成实例:
let data = dv.pages("#本库教程").map(page => [page.file.link, page.type, page.created]);
dv.table(["Link", "Type", "Created"], data);
let btn = dv.el("button", "Copy table");
btn.onclick = function() {
new Notice("COPY!")
let md_text = dv.markdownTable(["File("+data.length+")", "Type", "Created"], data);
navigator.clipboard.writeText(md_text);
}