Last active
January 5, 2022 16:33
-
-
Save kemsakurai/a4b2f1d98bd63fbb656697ca02b53251 to your computer and use it in GitHub Desktop.
Spreadsheet のセルの値(TSV)を、Redmineのチケットのdescription欄の記載内容っぽくクリップボードに貼り付けるユーザースクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name TSV to Redmine Ticket description | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @author K.Sakurai | |
// @resource CSS1 https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css | |
// @require https://cdn.jsdelivr.net/npm/toastify-js | |
// @match http*://*/* | |
// @run-at context-menu | |
// @grant GM_addStyle | |
// @grant GM_getResourceText | |
// @grant GM_setClipboard | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
// CSS読み込み | |
GM_addStyle(GM_getResourceText('CSS1')); | |
var value = window.prompt("SpreadSheet の値を変換"); | |
if (value == null || value == "") { | |
return; | |
} | |
var result = convertSheetValueToMarkdownTable(value); | |
copyToClipBoardFrom(result); | |
noticeMessage("texttile形式に変換しました"); | |
// クリップボードにコピーする | |
function copyToClipBoardFrom(text) { | |
GM_setClipboard(text); | |
} | |
// メッセージ通知 | |
function noticeMessage(text) { | |
Toastify({ | |
text: text, | |
duration: 3000, | |
gravity: "bottom", // `top` or `bottom` | |
position: 'right', // `left`, `center` or `right` | |
}).showToast(); | |
} | |
function convertSheetValueToMarkdownTable(str) { | |
var rows = str.split((/[\n\u0085\u2028\u2029]|\r\n?/g)).map(function(row) { | |
console.log(row) | |
return row.split("\t") | |
}) | |
var columnWidths = rows[0].map(function(column, columnIndex) { | |
return columnWidth(rows, columnIndex) | |
}) | |
var phrases = new Array(); | |
console.log(columnWidths); | |
for (var i = 0; i < rows.length; i ++) { | |
if (i == 0) { | |
continue; | |
} | |
for (var j = 0; j< rows[i].length; j++) { | |
phrases.push("h3. "+ rows[0][j]); | |
phrases.push(rows[i][j]); | |
} | |
phrases.push("----------------------------------"); | |
} | |
return phrases.join("\n\n"); | |
function columnWidth(rows, columnIndex) { | |
return Math.max.apply(null, rows.map(function(row) { | |
return row[columnIndex].length | |
})) | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment