使用油猴脚本,自动填写Jira任务
公司使用Jira作为日常管理,所以Jira填写就比较频繁了,我做了一个示例,剩下的功能就各位自己添加吧!
版本1
最基本的方法,而且也bug,没有时间格式化,已放弃。
版本2

// ==UserScript== // @name Jira填写 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 自动填充,每周填写的任务计划 // @author Jack Meng // @match http://jira.cares.sh.cn/secure/CreateSubTaskIssue.* // @match http://jira.cares.sh.cn/browse/* // @icon // @run-at document-end // @grant none // ==/UserScript== (function() { 'use strict'; // Your code here... Date.prototype.Format = function(fmt){ var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } var loginfo=(msg)=>console.log(`%c【${new Date().Format("yyyy-MM-dd hh:mm:ss")}】%c ========> ${msg}`,"background:red;font-size: 16px; padding: 1px; border-radius: 3px;","background:transparent"); var subTask = $("#stqc_show"); if(subTask.length>0) { loginfo("已找到添加子任务按钮") subTask[0].onclick=()=>{ loginfo("添加子任务onClick事件监听。"); setTimeout(AddFun,1000); } } else { loginfo("未找到添加子任务按钮") } function AddFun() { var isAdd=false; var host = window.location.host; if(host=="jira.cares.sh.cn") { var par = document.getElementById("span_userinfo"); loginfo("注入填充数据按钮"); par = $(".form-footer")[0];//field-group if(par==undefined) return isAdd; var f = par.firstElementChild; //填充1周 var a = document.createElement("a"); a.id="aLink"; a.href="#"; a.style="vertical-align: middle;margin-right: 10px;"; a.target="_blank" a.onclick = ()=>fillData(14); a.innerText="填充1周"; par.insertBefore(a,f); //填充2周 var a2 = document.createElement("a"); a2.id="aLink2"; a2.href="#"; a2.style="vertical-align: middle;"; a2.target="_blank" a2.onclick = ()=>fillData(21); a2.innerText="填充2周"; par.insertBefore(a2,f); //填充2周--按钮 var a3 = document.createElement("input"); a3.id="btnFillData"; a3.type="button"; a3.className="aui-button aui-button-primary"; a3.onclick = ()=>fillData(21); a3.value="填充2周"; //par.insertBefore(a3,f); isAdd=true; } return isAdd; } var fillData = (dayCount)=>{ loginfo(`给页面表单填充下${dayCount==14?"":"下"}周数据`); var d = new Date(); d.setDate(d.getDate()+ dayCount - d.getDay()); //$("#duedate")[0].value=d.toLocaleDateString('zh'); $("#duedate")[0].value=d.Format("yyyy-MM-dd"); $("#timetracking_originalestimate")[0].value='1w'; $("#timetracking_remainingestimate")[0].value='1w'; var endDate=d.Format("MMdd"); d.setDate(d.getDate() - 6); var beginDate=d.Format("MMdd"); $("#summary")[0].value=`${$("#summary-val")[0].innerText}子任务${d.Format("yyyy")}(${beginDate}-${endDate})`; $("#assign-to-me-trigger")[0].click(); return false; } // 创建一个定时器,每秒执行一次任务,如果任务完成或超过尝试次数时,停止执行 /* var taskCount=0; var intervalId = setInterval(function() { // 执行任务 var taskIsFinished = AddFun();// 在这里执行你的任务,并返回执行结果 taskCount++; // 如果任务完成或尝试指定次数时,停止定时器 if (taskIsFinished || taskCount > 10) { clearInterval(intervalId); } }, 1000); */ })();
版本3
优化:因为structure页面加载耗时,所以使用延时函数初始化页面。

// ==UserScript== // @name Jira填写 // @namespace http://tampermonkey.net/ // @version 0.3 // @description 自动填充,每周填写的任务计划 // @author Jack Meng // @match http://jira.cares.sh.cn/secure/CreateSubTaskIssue.* // @match http://jira.cares.sh.cn/browse/* // @match http://jira.cares.sh.cn/projects/* // @icon // @run-at document-end // @grant none // ==/UserScript== var SS=(p)=>document.querySelector(p); (function() { 'use strict'; // Your code here... $(document).ready(function(){ // 在此处执行希望在页面加载完成后执行的操作 setTimeout(InitPage,3000); }); Date.prototype.Format = function(fmt){ var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } var loginfo=(msg)=>console.log(`%c【${new Date().Format("yyyy-MM-dd hh:mm:ss")}】%c ========> ${msg}`,"background:red;font-size: 16px; padding: 1px; border-radius: 3px;","background:transparent"); function InitPage(){ var subTask = $("#stqc_show"); if(subTask.length>0) { loginfo("已找到添加子任务按钮") subTask[0].onclick=()=>{ loginfo("添加子任务onClick事件监听。"); setTimeout(AddFun,1000); } } else { loginfo("未找到添加子任务按钮") } } function AddFun() { var isAdd=false; var host = window.location.host; if(host=="jira.cares.sh.cn") { var par = document.getElementById("span_userinfo"); loginfo("注入填充数据按钮"); par = $(".form-footer")[0];//field-group if(par==undefined) return isAdd; var f = par.firstElementChild; //填充1周 var a = document.createElement("a"); a.id="aLink"; a.href="#"; a.style="vertical-align: middle;margin-right: 10px;"; a.target="_blank" a.onclick = ()=>fillData(14); a.innerText="填充1周"; par.insertBefore(a,f); //填充2周 var a2 = document.createElement("a"); a2.id="aLink2"; a2.href="#"; a2.style="vertical-align: middle;"; a2.target="_blank" a2.onclick = ()=>fillData(21); a2.innerText="填充2周"; par.insertBefore(a2,f); //填充2周--按钮 var a3 = document.createElement("input"); a3.id="btnFillData"; a3.type="button"; a3.className="aui-button aui-button-primary"; a3.onclick = ()=>fillData(21); a3.value="填充2周"; //par.insertBefore(a3,f); isAdd=true; } return isAdd; } var fillData = (dayCount)=>{ loginfo(`给页面表单填充下${dayCount==14?"":"下"}周数据`); var d = new Date(); d.setDate(d.getDate()+ dayCount - d.getDay()); //$("#duedate")[0].value=d.toLocaleDateString('zh'); $("#duedate")[0].value=d.Format("yyyy-MM-dd"); $("#timetracking_originalestimate")[0].value='1w'; $("#timetracking_remainingestimate")[0].value='1w'; var endDate=d.Format("MMdd"); d.setDate(d.getDate() - 6); var beginDate=d.Format("MMdd"); $("#summary")[0].value=`${$("#summary-val")[0].innerText}子任务${d.Format("yyyy")}(${beginDate}-${endDate})`; $("#assign-to-me-trigger")[0].click(); return false; } // 创建一个定时器,每秒执行一次任务,如果任务完成或超过尝试次数时,停止执行 /* var taskCount=0; var intervalId = setInterval(function() { // 执行任务 var taskIsFinished = AddFun();// 在这里执行你的任务,并返回执行结果 taskCount++; // 如果任务完成或尝试指定次数时,停止定时器 if (taskIsFinished || taskCount > 10) { clearInterval(intervalId); } }, 1000); */ })();
版本4
优化:增加本周填写

// ==UserScript== // @name Jira填写 // @namespace http://tampermonkey.net/ // @version 0.4 // @description 自动填充,每周填写的任务计划 // @author Jack Meng // @match http://jira.cares.sh.cn/secure/CreateSubTaskIssue.* // @match http://jira.cares.sh.cn/browse/* // @match http://jira.cares.sh.cn/projects/* // @icon // @run-at document-end // @grant none // ==/UserScript== var SS=(p)=>document.querySelector(p); (function() { 'use strict'; // Your code here... $(document).ready(function(){ // 在此处执行希望在页面加载完成后执行的操作 setTimeout(InitPage,3000); }); Date.prototype.Format = function(fmt){ var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } var loginfo=(msg)=>console.log(`%c【${new Date().Format("yyyy-MM-dd hh:mm:ss")}】%c ========> ${msg}`,"background:red;font-size: 16px; padding: 1px; border-radius: 3px;","background:transparent"); function InitPage(){ var subTask = $("#stqc_show"); if(subTask.length>0) { loginfo("已找到添加子任务按钮") subTask[0].onclick=()=>{ loginfo("添加子任务onClick事件监听。"); setTimeout(AddFun,1000); } } else { loginfo("未找到添加子任务按钮") } } function AddFun() { var isAdd=false; var host = window.location.host; if(host=="jira.cares.sh.cn") { var par = document.getElementById("span_userinfo"); loginfo("注入填充数据按钮"); par = $(".form-footer")[0];//field-group if(par==undefined) return isAdd; var f = par.firstElementChild; //填充本周 var a = document.createElement("a"); a.id="aLink"; a.href="#"; a.style="vertical-align: middle;margin-right: 10px;"; a.target="_blank" a.onclick = ()=>fillData(7); a.innerText="填充本周"; par.insertBefore(a,f); //填充1周 var a1 = document.createElement("a"); a1.id="aLink"; a1.href="#"; a1.style="vertical-align: middle;margin-right: 10px;"; a1.target="_blank" a1.onclick = ()=>fillData(14); a1.innerText="填充1周"; par.insertBefore(a1,f); //填充2周 var a2 = document.createElement("a"); a2.id="aLink2"; a2.href="#"; a2.style="vertical-align: middle;"; a2.target="_blank" a2.onclick = ()=>fillData(21); a2.innerText="填充2周"; par.insertBefore(a2,f); //填充2周--按钮 var a3 = document.createElement("input"); a3.id="btnFillData"; a3.type="button"; a3.className="aui-button aui-button-primary"; a3.onclick = ()=>fillData(21); a3.value="填充2周"; //par.insertBefore(a3,f); isAdd=true; } return isAdd; } var fillData = (dayCount)=>{ loginfo(`给页面表单填充下${dayCount==14?"":"下"}周数据`); var d = new Date(); d.setDate(d.getDate()+ dayCount - d.getDay()); //$("#duedate")[0].value=d.toLocaleDateString('zh'); $("#duedate")[0].value=d.Format("yyyy-MM-dd"); $("#timetracking_originalestimate")[0].value='1w'; $("#timetracking_remainingestimate")[0].value='1w'; var endDate=d.Format("MMdd"); d.setDate(d.getDate() - 6); var beginDate=d.Format("MMdd"); $("#summary")[0].value=`${$("#summary-val")[0].innerText}子任务${d.Format("yyyy")}(${beginDate}-${endDate})`; $("#assign-to-me-trigger")[0].click(); return false; } // 创建一个定时器,每秒执行一次任务,如果任务完成或超过尝试次数时,停止执行 /* var taskCount=0; var intervalId = setInterval(function() { // 执行任务 var taskIsFinished = AddFun();// 在这里执行你的任务,并返回执行结果 taskCount++; // 如果任务完成或尝试指定次数时,停止定时器 if (taskIsFinished || taskCount > 10) { clearInterval(intervalId); } }, 1000); */ })();
版本5
优化:移除表格中不能复制的样式

// ==UserScript== // @name Jira填写 // @namespace http://tampermonkey.net/ // @version 0.5 // @description 自动填充,每周填写的任务计划 // @author Jack Meng // @match http://jira.cares.sh.cn/secure/CreateSubTaskIssue.* // @match http://jira.cares.sh.cn/browse/* // @match http://jira.cares.sh.cn/projects/* // @icon // @run-at document-end // @grant none // ==/UserScript== var SS=(p)=>document.querySelector(p); (function() { 'use strict'; // Your code here... $(document).ready(function(){ // 在此处执行希望在页面加载完成后执行的操作 setTimeout(InitPage,3000); }); Date.prototype.Format = function(fmt){ var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } var loginfo=(msg)=>console.log(`%c【${new Date().Format("yyyy-MM-dd hh:mm:ss")}】%c ========> ${msg}`,"background:red;font-size: 16px; padding: 1px; border-radius: 3px;","background:transparent"); function InitPage(){ //移除Table的禁止复制 if(issuePanelTableWrapper!=null){ var trs=issuePanelTableWrapper.children[0].children[1].rows; // 将 HTMLCollection 转换为数组并使用 forEach 遍历每一行 Array.from(trs).forEach((item, index) =>item.style.userSelect=""); } var subTask = $("#stqc_show"); if(subTask.length>0) { loginfo("已找到添加子任务按钮") subTask[0].onclick=()=>{ loginfo("添加子任务onClick事件监听。"); setTimeout(AddFun,1000); } } else { loginfo("未找到添加子任务按钮") } quickSearchInput.value=GM_info.script.author; } function AddFun() { var isAdd=false; var host = window.location.host; if(host=="jira.cares.sh.cn") { var par = document.getElementById("span_userinfo"); loginfo("注入填充数据按钮"); par = $(".form-footer")[0];//field-group par = $("#create-issue-submit")[0].parentNode.parentNode; if(par==undefined) return isAdd; var f = par.firstElementChild; //填充本周 var a = document.createElement("a"); a.id="aLink"; a.href="#"; a.style="vertical-align: middle;margin-right: 10px;"; a.target="_blank" a.onclick = ()=>fillData(7); a.innerText="填充本周"; par.insertBefore(a,f); //填充1周 var a1 = document.createElement("a"); a1.id="aLink"; a1.href="#"; a1.style="vertical-align: middle;margin-right: 10px;"; a1.target="_blank" a1.onclick = ()=>fillData(14); a1.innerText="填充1周"; par.insertBefore(a1,f); //填充2周 var a2 = document.createElement("a"); a2.id="aLink2"; a2.href="#"; a2.style="vertical-align: middle;"; a2.target="_blank" a2.onclick = ()=>fillData(21); a2.innerText="填充2周"; par.insertBefore(a2,f); //填充2周--按钮 var a3 = document.createElement("input"); a3.id="btnFillData"; a3.type="button"; a3.className="aui-button aui-button-primary"; a3.onclick = ()=>fillData(21); a3.value="填充2周"; //par.insertBefore(a3,f); isAdd=true; } return isAdd; } var fillData = (dayCount)=>{ loginfo(`给页面表单填充下${dayCount==14?"":"下"}周数据`); var d = new Date(); d.setDate(d.getDate()+ dayCount - d.getDay()); //$("#duedate")[0].value=d.toLocaleDateString('zh'); $("#duedate")[0].value=d.Format("yyyy-MM-dd"); $("#timetracking_originalestimate")[0].value='1w'; $("#timetracking_remainingestimate")[0].value='1w'; var endDate=d.Format("MMdd"); d.setDate(d.getDate() - 6); var beginDate=d.Format("MMdd"); $("#summary")[0].value=`${$("#summary-val")[0].innerText}子任务${d.Format("yyyy")}(${beginDate}-${endDate})`; $("#assign-to-me-trigger")[0].click(); return false; } // 创建一个定时器,每秒执行一次任务,如果任务完成或超过尝试次数时,停止执行 /* var taskCount=0; var intervalId = setInterval(function() { // 执行任务 var taskIsFinished = AddFun();// 在这里执行你的任务,并返回执行结果 taskCount++; // 如果任务完成或尝试指定次数时,停止定时器 if (taskIsFinished || taskCount > 10) { clearInterval(intervalId); } }, 1000); */ })();
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/17639889.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-08-18 通过CDN引入jQuery的几种方式
2020-08-18 用7张思维导图带你掌握 “Python学习路线”
2018-08-18 Cisco VPN Client for Windows 7 32/64位
2014-08-18 系列文章--精通CSS.DIV网页样式与布局学习
2014-08-18 实用的树形菜单控件tree