您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
confluence auto fill
// ==UserScript== // @name Mobile Confluence Tools // @namespace http://www.akuvox.com/ // @version 0.6 // @description confluence auto fill // @author bink // @match http://192.168.10.2:83/pages/* // @grant none // @license bink // ==/UserScript== (function () { String.prototype.replaceAll = function (s1, s2) { var value; value = this.replace(s1, s2); for (var i = 0; i < 25; i++) { value = value.replace(s1, s2); } return value; } /*库方法*/ HTMLElement.prototype.appendHTML = function (html) { var divTemp = document.createElement("div"), nodes = null , fragment = document.createDocumentFragment(); divTemp.innerHTML = html; nodes = divTemp.childNodes; for (var i = 0, length = nodes.length; i < length; i += 1) { fragment.appendChild(nodes[i].cloneNode(true)); } this.appendChild(fragment); nodes = null; fragment = null; }; //主函数开始 //创建button var result = createButton(); function getSaturdayDates() { const today = new Date(); const currentDayOfWeek = today.getDay(); // 获取当前星期几 (0 表示星期天, 1 表示星期一, 以此类推) // 计算上周六的日期 const lastSaturday = new Date(today); lastSaturday.setDate(today.getDate() - currentDayOfWeek - 1); // 当前日期减去当前星期几的天数再减去一天,即为上周六的日期 // 计算本周六的日期 const thisSaturday = new Date(today); thisSaturday.setDate(today.getDate() + (6 - currentDayOfWeek)); // 当前日期加上距离本周六的天数,即为本周六的日期 // 计算下周六的日期 const nextSaturday = new Date(today); nextSaturday.setDate(today.getDate() + (6 - currentDayOfWeek) + 7); // 当前日期加上距离下周六的天数,即为下周六的日期 // 格式化日期为 YYYY-MM-DD const formatDate = date => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }; return { lastSaturday: formatDate(lastSaturday), thisSaturday: formatDate(thisSaturday), nextSaturday: formatDate(nextSaturday) }; } function getMonthRanges() { const today = new Date(); const currentYear = today.getFullYear(); const currentMonth = today.getMonth() + 1; // 月份从0开始,需要加1 // 计算本月第一天 const firstDayOfCurrentMonth = new Date(currentYear, currentMonth - 1, 1); // 计算本月最后一天 const lastDayOfCurrentMonth = new Date(currentYear, currentMonth, 0); // 计算下月第一天 const firstDayOfNextMonth = new Date(currentYear, currentMonth, 1); // 计算下月最后一天 const lastDayOfNextMonth = new Date(currentYear, currentMonth + 1, 0); // 格式化日期为 YYYY-MM-DD const formatDate = date => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }; return { firstDayOfCurrentMonth: formatDate(firstDayOfCurrentMonth), lastDayOfCurrentMonth: formatDate(lastDayOfCurrentMonth), firstDayOfNextMonth: formatDate(firstDayOfNextMonth), lastDayOfNextMonth: formatDate(lastDayOfNextMonth) }; } function formatDateToYearMonth(inputDate) { const date = new Date(inputDate); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); return `${year}${month}`; } function formatDateToYearMonthDay(inputDate) { const date = new Date(inputDate); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}${month}${day}`; } //自己的方法 //flag:0本周、1下周、2下月 function autoCompeleteDailyData(flag) { //获得人名,userid var userInfo = document.getElementById("user-menu-link"); var userId = userInfo.getAttribute("data-username"); var userName = userInfo.getAttribute("title"); const { lastSaturday, thisSaturday, nextSaturday } = getSaturdayDates(); //填入标题 var title = document.getElementById("content-title-div").getElementsByTagName("input")[0]; //填入表格数据 for (var i = 0; i < document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro").length; i++) { var data = document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro")[i].getAttribute("data-macro-parameters"); console.log("chenmj", data); //替换 userid data = data.replaceAll("minjie.chen", userId); //替换开始日期 if(flag == 0) { //本周 data = data.replace(/"Target end" > (\d{4}-\d{2}-\d{2}) AND "Target end" <\\= (\d{4}-\d{2}-\d{2})/g, `"Target end" > ${lastSaturday} AND "Target end" <\\= ${thisSaturday}`); title.value = userName + " - " + formatDateToYearMonthDay(lastSaturday) + "~" + formatDateToYearMonthDay(thisSaturday); } else if (flag == 1) { //下周 data = data.replace(/"Target end" > (\d{4}-\d{2}-\d{2}) AND "Target end" <\\= (\d{4}-\d{2}-\d{2})/g, `"Target end" > ${thisSaturday} AND "Target end" <\\= ${nextSaturday}`); title.value = userName + " - " + formatDateToYearMonthDay(thisSaturday) + "~" + formatDateToYearMonthDay(nextSaturday); } console.log("final data = ", data); document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro")[i].setAttribute("data-macro-parameters", data); } } function autoCompeleteMonthData(flag) { //获得人名,userid var userInfo = document.getElementById("user-menu-link"); var userId = userInfo.getAttribute("data-username"); var userName = userInfo.getAttribute("title"); const { firstDayOfCurrentMonth, lastDayOfCurrentMonth, firstDayOfNextMonth, lastDayOfNextMonth } = getMonthRanges(); //填入标题 var title = document.getElementById("content-title-div").getElementsByTagName("input")[0]; //填入表格数据 for (var i = 0; i < document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro").length; i++) { var data = document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro")[i].getAttribute("data-macro-parameters"); console.log("chenmj", data); if (null == data) { continue; } //替换 userid data = data.replaceAll("minjie.chen", userId); //替换开始日期 if(flag == 0) { //本月 //const regex = /due >\\= (\d{4}-\d{2}-\d{2}) AND due <\\= (\d{4}-\d{2}-\d{2})/g; const regex = /"Target end" >\\= (\d{4}-\d{2}-\d{2}) AND "Target end" <\\= (\d{4}-\d{2}-\d{2})/g; // 使用正则表达式对象的 exec 方法进行匹配 const match = regex.exec(data); // 检查是否找到匹配项 if (match) { const startDate = match[1]; // 第一个捕获组 const endDate = match[2]; // 第二个捕获组 console.log(`找到匹配项,开始日期:${startDate},结束日期:${endDate}`); } else { console.log('未找到匹配项'); } data = data.replace(/due >\\= (\d{4}-\d{2}-\d{2}) AND due <\\= (\d{4}-\d{2}-\d{2})/g, `due >\\= ${firstDayOfCurrentMonth} AND due <\\= ${lastDayOfCurrentMonth}`); data = data.replace(/"Target end" >\\= (\d{4}-\d{2}-\d{2}) AND "Target end" <\\= (\d{4}-\d{2}-\d{2})/g, `"Target end" >\\= ${firstDayOfCurrentMonth} AND "Target end" <\\= ${lastDayOfCurrentMonth}`); title.value = userName + " - 工作日志 - " + formatDateToYearMonth(firstDayOfCurrentMonth); } else if (flag == 1) { //下月 data = data.replace(/due >\\= (\d{4}-\d{2}-\d{2}) AND due <\\= (\d{4}-\d{2}-\d{2})/g, `due >\\= ${firstDayOfNextMonth} AND due <\\= ${lastDayOfNextMonth}`); data = data.replace(/"Target end" >\\= (\d{4}-\d{2}-\d{2}) AND "Target end" <\\= (\d{4}-\d{2}-\d{2})/g, `"Target end" >\\= ${firstDayOfNextMonth} AND "Target end" <\\= ${lastDayOfNextMonth}`); title.value = userName + " - 工作日志 - " + formatDateToYearMonth(firstDayOfNextMonth); } console.log("final data = ", data); document.getElementById("wysiwygTextarea_ifr").contentDocument.getElementsByClassName("editor-inline-macro")[i].setAttribute("data-macro-parameters", data); } } function createButton() { var title = document.getElementById("editor-precursor"); if (null == title) { return -1; } //找到日常工作,认为是在编辑日常工作 var workspace = document.getElementById("breadcrumbs").getElementsByTagName("li")[0].innerHTML; if (workspace.indexOf("日常工作") < 0) { return -1; } var html0 = "<button class='aui-button aui-button-subtle rte-button-restrictions' type='button' data-tooltip='未限制' id='autoCompeleteCurrentDailyData' data-explicit-restrictions='false' data-inherited-restrictions='false' original-title=''><span class='aui-icon aui-icon-small aui-iconfont-edit'></span>一键填入本周日报数据</button>"; title.childNodes[0].childNodes[0].appendHTML(html0); document.getElementById('autoCompeleteCurrentDailyData').addEventListener('click', function (ev) { autoCompeleteDailyData(0); }); var html2 = "<button class='aui-button aui-button-subtle rte-button-restrictions' type='button' data-tooltip='未限制' id='autoCompeleteNextDailyData' data-explicit-restrictions='false' data-inherited-restrictions='false' original-title=''><span class='aui-icon aui-icon-small aui-iconfont-edit'></span>一键填入下周日报数据</button>"; title.childNodes[0].childNodes[0].appendHTML(html2); document.getElementById('autoCompeleteNextDailyData').addEventListener('click', function (ev) { autoCompeleteDailyData(1); }); var html3 = "<button class='aui-button aui-button-subtle rte-button-restrictions' type='button' data-tooltip='未限制' id='autoCompeleteCurrentMonthData' data-explicit-restrictions='false' data-inherited-restrictions='false' original-title=''><span class='aui-icon aui-icon-small aui-iconfont-edit'></span>一键填入本月月报数据</button>"; title.childNodes[0].childNodes[0].appendHTML(html3); document.getElementById('autoCompeleteCurrentMonthData').addEventListener('click', function (ev) { autoCompeleteMonthData(0); }); var html4 = "<button class='aui-button aui-button-subtle rte-button-restrictions' type='button' data-tooltip='未限制' id='autoCompeleteNextMonthData' data-explicit-restrictions='false' data-inherited-restrictions='false' original-title=''><span class='aui-icon aui-icon-small aui-iconfont-edit'></span>一键填入下月月报数据</button>"; title.childNodes[0].childNodes[0].appendHTML(html4); document.getElementById('autoCompeleteNextMonthData').addEventListener('click', function (ev) { autoCompeleteMonthData(1); }); } })();