目前的日记能力只能默认卡死在某个笔记本下按年、月、日期的层级创建笔记。而我现在不太需要这种方式,而是想要在某个笔记之下快速创建一个带日期的笔记。这个有办法实现吗?
相关帖子
-
请教一下大佬,思源的 js 代码片段有没有办法把新建的笔记本顶到前面。能力我已经通过 ai 实现了。
现在就有两个问题:
- 新建的笔记本不会顶到页面里面,需要自己去打开(就是希望能点击之后,思源笔记会打开这个新建的笔记,能通过代码片段实现吗?)
- 注册到顶栏的按钮没有 logo,如下图箭头所指位置,这个要咋处理?

代码片段
// 配置参数 const config = { token: '', // 替换为你的API Token notebookId: '', // 替换为目标笔记本ID parentPath: '/01.随笔', // 替换为目标父文档的路径 apiUrl: 'http://127.0.0.1:6806/api/filetree/createDocWithMd' // 思源笔记API的URL }; // 该函数用于获取当前日期并返回符合要求的文件名(如:23.10.11.未命名) function getFileName() { const now = new Date(); const year = now.getFullYear().toString().slice(2); // 获取年份后两位 const month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份 const day = now.getDate().toString().padStart(2, '0'); // 日期 return `${year}.${month}.${day}.未命名`; } // 获取当前时间,格式化为 YYYY-MM-DD HH:MM:SS function getCurrentTime() { const now = new Date(); const year = now.getFullYear(); const month = (now.getMonth() + 1).toString().padStart(2, '0'); const day = now.getDate().toString().padStart(2, '0'); const hours = now.getHours().toString().padStart(2, '0'); const minutes = now.getMinutes().toString().padStart(2, '0'); const seconds = now.getSeconds().toString().padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } // 创建子文档 async function createSubDocument() { const { token, notebookId, parentPath, apiUrl } = config; // 解构获取配置参数 const fileName = getFileName(); // 获取文件名 const currentTime = getCurrentTime(); // 获取当前时间 // 将时间添加到文档内容中 const markdownContent = `# ${fileName}\n\n生成时间: ${currentTime}\n\n这是一个自动生成的子文档。`; // 默认内容,可以根据需要修改 // 请求数据,子文档的路径是相对父文档的路径 const requestData = { notebook: notebookId, path: `${parentPath}/${fileName}`, // 子文档的路径 markdown: markdownContent, // 子文档内容 }; // 调用思源笔记 API 创建子文档 const response = await fetch(apiUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Token ${token}`, }, body: JSON.stringify(requestData), }); const result = await response.json(); if (result.code === 0) { console.log('子文档创建成功:', result.data); } else { console.error('子文档创建失败:', result.msg); } } // 插入按钮,点击时创建子文档 function addCreateSubDocButton() { let barSync = document.getElementById("barSync"); barSync.insertAdjacentHTML( "afterEnd", '<div id="barCreateSubDoc_simulate" class="toolbar__item ariaLabel" aria-label="创建子文档/Create Sub Document" ></div>' ); let createSubDocBtn = document.getElementById("barCreateSubDoc_simulate"); createSubDocBtn.innerHTML = `<svg><use xlink:href="#iconCreateSubDoc"></use></svg>`; createSubDocBtn.addEventListener("click", function () { createSubDocument(); }, false); } // 调用函数在工具栏添加按钮 addCreateSubDocButton();1 回复 -
搞定了,感谢大佬。
完整 js 代码片段分享给大家:
// 配置参数 const config = { token: '', // 替换为你的API Token notebookId: '', // 替换为目标笔记本ID parentPath: '/01.随笔', // 替换为目标父文档的路径 apiUrl: 'api/filetree/createDocWithMd' // 思源笔记API的URL }; // 该函数用于获取当前日期并返回符合要求的文件名(如:23.10.11.未命名) function getFileName() { const now = new Date(); const year = now.getFullYear().toString().slice(2); // 获取年份后两位 const month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份 const day = now.getDate().toString().padStart(2, '0'); // 日期 return `${year}.${month}.${day}.未命名`; } // 获取当前时间,格式化为 YYYY-MM-DD HH:MM:SS function getCurrentTime() { const now = new Date(); const year = now.getFullYear(); const month = (now.getMonth() + 1).toString().padStart(2, '0'); const day = now.getDate().toString().padStart(2, '0'); const hours = now.getHours().toString().padStart(2, '0'); const minutes = now.getMinutes().toString().padStart(2, '0'); const seconds = now.getSeconds().toString().padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } // 创建子文档 async function createSubDocument() { const { token, notebookId, parentPath, apiUrl } = config; // 解构获取配置参数 const fileName = getFileName(); // 获取文件名 const currentTime = getCurrentTime(); // 获取当前时间 // 将时间添加到文档内容中 const markdownContent = `# ${fileName}\n\n生成时间: ${currentTime}\n\n这是一个自动生成的子文档。`; // 默认内容,可以根据需要修改 // 请求数据,子文档的路径是相对父文档的路径 const requestData = { notebook: notebookId, path: `${parentPath}/${fileName}`, // 子文档的路径 markdown: markdownContent, // 子文档内容 }; // 调用思源笔记 API 创建子文档 const response = await fetch(apiUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Token ${token}`, }, body: JSON.stringify(requestData), }); const result = await response.json(); if (result.code === 0) { console.log('子文档创建成功:', result.data); const newDocId = result.data; // 获取新创建文档的 ID openDocumentInEditor(newDocId); // 调用编辑窗口 } else { console.error('子文档创建失败:', result.msg); } } // 在编辑窗口打开文档 function openDocumentInEditor(docId) { const url = `siyuan://blocks/${docId}`; window.open(url, '_blank'); // 使用 window.open 来打开新的窗口 console.log(`正在打开文档编辑窗口: ${url}`); } // 插入按钮,点击时创建子文档 function addCreateSubDocButton() { let barSync = document.getElementById("barSync"); barSync.insertAdjacentHTML( "afterEnd", '<div id="barCreateSubDoc_simulate" class="toolbar__item ariaLabel" aria-label="创建子文档/Create Sub Document" ></div>' ); let createSubDocBtn = document.getElementById("barCreateSubDoc_simulate"); createSubDocBtn.innerHTML = `<svg><use xlink:href="#iconCalendar"></use></svg>`; createSubDocBtn.addEventListener("click", function () { createSubDocument(); }, false); } // 调用函数在工具栏添加按钮 addCreateSubDocButton();1 回复1 操作muxue 在 2025-10-11 20:18:57 更新了该回帖 -
魔改之一键三连
1 按钮可放到左侧边栏
2 同时创建子文档,如下图
3 支持新窗口打开和置顶
4 当日已创建,则直接打开


