您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Export Timesheet Summary to CSV.
// ==UserScript== // @name Export JIRA Timesheet Summary To CSV // @namespace undefined // @version 0.5 // @license MIT // @description Export Timesheet Summary to CSV. // @author Allen Zhang // @match http://jira.edudyn.com/secure/TempoUserBoard!timesheet.jspa* // @grant none // ==/UserScript== (function() { 'use strict'; const $ = jQuery; let worker = $('#tempo-report-header-div > h1').text().trim(); let date = new Date($('#tempo-timeframe-bar > span').text().trim().split(' - ')[1].slice(0, -1)); let firstDay = new Date(date.getFullYear(), date.getMonth(), 1), lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); let period = formatDate(firstDay) + ' - ' + formatDate(lastDay); let exportbtn = '<div id="export2xlsBtn" class="add-buttons-container" style="margin-left: 30px;"><a name="tempo-add-button" class="open-dialog tempo-log-work-button aui-button aui-button-primary" href="#">Export to CSV</a></div>'; $('#stalker > div > div.command-bar > div > div > div.tt-header-items-container.aui-group > div.tt-item-right.aui-item').append(exportbtn); $('#export2xlsBtn').on("click", () => { let work = []; $('table#issuetable:eq(0) tbody tr').each((index, dom) => { let obj = {}; let hourTd = $(dom).find('td.hours'); let firstTd = $(dom).find('td.issuekey'); obj.Period = period; obj.Worker = worker; obj.Hours = parseFloat($(hourTd).text().trim()); obj.Ticket = $(firstTd).find('a[title]').text().trim(); work.push(obj); }); console.table(work); dateToCSV(work); }); function formatDate(d) { let month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('/'); } // link: http://jsfiddle.net/hybrid13i/JXrwM/ function dateToCSV(arrData) { let CSV = ''; let csvHeader = {}; //Set Report title in first row or line for (let prop in arrData[0]) { if (arrData[0].hasOwnProperty(prop)) { CSV += prop + ','; } } CSV += '\r'; //1st loop is to extract each row for (let i = 0; i < arrData.length; i++) { let row = ""; //2nd loop will extract each column and convert it in string comma-seprated for (let index in arrData[i]) { row += '"' + arrData[i][index] + '",'; } row.slice(0, row.length - 1); //add a line break after each row CSV += row + '\r\n'; } if (CSV === '') { alert("Invalid data"); return; } //Generate a file name let fileName = "MyReport_" + worker.split(' ').join('_'); //Initialize file format you want csv or xls let uri = 'data:text/csv;charset=utf-8,' + escape(CSV); let link = document.createElement("a"); link.href = uri; //set the visibility hidden so it will not effect on your web-layout link.style = "visibility:hidden"; link.download = fileName + ".csv"; //this part will append the anchor tag and remove it after automatic click document.body.appendChild(link); link.click(); document.body.removeChild(link); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址