Dataview讓我們將筆記當成資料來查詢,但查詢出來的表格卻無法搜尋、無法複製再利用。今天分享一個使用Dataviewjs來產生表格與Copy按鈕的作法:

  1. 以Dataviewjs查詢出表格

  2. 在表格下方產生一個【Copy】按鈕

  3. 點擊【Copy】按鈕後,將Dataview表格轉換成Markdown表格,並複製到系統剪貼簿

  4. 到需要插入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);
 
}
 

3. 相關鏈接

4. 教學影片

https://youtu.be/7vsVj6sV3Dk