Wilson@思源

目 录

批量转换文档的标题

see https://ld246.com/article/1726880977052
js
//!js return (async () => { /////// 参数配置区 /////// // 需要转换的文档id const docBlockId = '20240916174656-fv3lpy5'; // 源标题 const srcHead = 'h2'; // 目标标题 const toHead = 'h3'; /////// 主逻辑区 /////// // 防止死循环 if(isRunning()) return render(`执行中,不必重复执行`); // sql查询 const sql = `select * from blocks where type='h' and subtype='${srcHead.toLowerCase()}' and root_id='${docBlockId}'`; const result = await query(sql); // 无数据提示 if(result.length === 0) return error('未找到任何数据'); // 转换标题 await convertHead(result); // 渲染结果 return render('已转换完成'); /////// 功能函数区 /////// // 标题转换函数 async function convertHead(result) { for(const head of result) { const data = "#".repeat(toHead.split('').pop()) + " " + head.content console.log(data); await fetchSyncPost('/api/block/updateBlock', {dataType:"markdown", id:head.id, data: data}); } } // 查询SQL函数 async function query(sql) { const result = await fetchSyncPost('/api/query/sql', { "stmt": sql }); if (result.code !== 0) { console.error("查询数据库出错", result.msg); return []; } return result.data; } // 渲染结果函数 function render(html, style) { onRender('.b3-form__space--small').then((container) => { container.style = style || 'color:var(--b3-card-info-color);'; container.innerHTML = html; }); return []; } // 渲染错误输出 function error(html, style) { return render(html, style || 'color:red;'); } // 监听dom渲染 function onRender(selector) { return new Promise(resolve => { const check = () => { let el = item.querySelector(selector); if (el) resolve(el); else requestAnimationFrame(check); }; check(); }); } // 检测是否正在执行,防止死循环 function isRunning(delay) { if(window.convertHeadRunning) return true; window.convertHeadRunning = true; // 这里保证3秒钟内只会被执行一次,可根据您脚本具体执行时间进行调整(这种调整通常可停止某些原因导致的死循环) setTimeout('window.convertHeadRunning = false', delay || 3000); return false; } })();