思源笔记折腾记录 - 嵌入块批量操作 - 批量移动文档为子文档

本贴最后更新于 790 天前,其中的信息可能已经事过境迁

一、实现方式

首先还是引入依赖,毕竟手写菜单元素有点蛋疼

import 自定义菜单 from 'siyuan-noob/customMenu/index.js' import 核心api from "siyuan-noob/utilKernel/kernelApi.js"

然后像思源笔记折腾记录 - 嵌入块批量操作 - 批量删除 - 链滴 (ld246.com)

里面的一样,我们注册一个菜单项给嵌入块

自定义菜单.块标菜单.注册自定义菜单项({ id:"嵌入块批量移动文档", 文字:"批量移动所在文档为子文档", 判定函数:()=>{ return 自定义菜单.块标菜单.菜单状态.当前块类型=='NodeBlockQueryEmbed' && !document.querySelectorAll( `div[data-node-id="${自定义菜单.块标菜单.菜单状态.当前块id}"]` )[1] }, 点击回调函数:(e)=>{ let 当前块元素 = document.querySelector(`[data-node-id="${自定义菜单.块标菜单.菜单状态.当前块id}"]`) 移动嵌入块所有文档为子文档(当前块元素) } })

然后我们来实现一个移动方法:

export async function 移动嵌入块所有文档为子文档(嵌入块元素){ let 嵌入块内部元素id数组 = [] 嵌入块元素.querySelectorAll('div[data-node-id]:not([data-type="NodeBlockQueryEmbed"])').forEach( el=>嵌入块内部元素id数组.push(el.dataset.nodeId) ) let 嵌入块属性=(await 从元素获取块属性(嵌入块元素)) await 批量移动所在文档到指定块所在文档(嵌入块内部元素id数组,嵌入块属性) 嵌入块元素.querySelector( '.protyle-action__reload' ).click() }
export async function 从元素获取块属性(块元素){ let id = 块元素.dataset.nodeId let sql = `select * from blocks where id ='${id}'` return (await 核心api.sql({stmt:sql}))[0] }

然后需要实现移动所在文档了

export async function 批量移动所在文档到指定块所在文档(id数组,目标块属性){ let sql=`select path from blocks where false ` id数组.forEach( id=>{ sql =sql+`or id='${id}'` } ) let 文档路径数组=[]; (await 核心api.sql({stmt:sql})).forEach( item=>{文档路径数组.push(item.path)} ) 文档路径数组=Array.from(new Set(文档路径数组)) await 核心api.批量移动文档( { fromPaths:文档路径数组, toNotebook:目标块属性.box, toPath:目标块属性.path } ) }

这回就不加确认了,反正移动也不会出什么大问题的吧.

二、使用方法

需要依赖这个代码片段

思源笔记折腾记录 - 运行你的笔记 - 链滴 (ld246.com)

然后把这篇文章的内容剪藏到你的思源笔记里面就可以用了哒


这个是我的爱发电账号,如果觉得这个对你有用可以考虑请我们喝一杯咖啡~~

leolee9086 正在创作一些简单的技术教程和小工具,以及设计方面内容 | 爱发电 (afdian.net)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25862 引用 • 107112 回帖 • 1 关注
2 操作
leolee 在 2023-04-11 00:18:48 更新了该帖
leolee 在 2023-04-08 03:25:17 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 60 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 110 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 3 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9928 引用 • 45085 回帖 • 79 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 648 关注
  • OneDrive
    2 引用 • 2 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 402 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 740 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 543 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    29 引用 • 230 回帖 • 125 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 227 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 580 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖 • 2 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 712 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 371 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 677 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 751 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    298 引用 • 763 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 6 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 177 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    496 引用 • 934 回帖