Excel等のスプレッドシートの表のコピーをMarkdown記法に変換する

Ads

Result

万能ではないですが、ExcelやGoogleスプレッドシートなどの表のコピーをMarkdown記法のtableに自動変換する、みたいなの

地味に便利かも。コードはvanillaです

javascript

var editor = document.getElementById("editor");

function columnWidth(rows, columnIndex) {
	return Math.max.apply(
		null,
		rows.map(function (row) {
			return row[columnIndex].length;
		})
	);
}

function looksLikeTable(data) {
	return true;
}

editor.addEventListener("paste", function (event) {
	var clipboard = event.clipboardData;
	var data = clipboard.getData("text/plain").trim();

	if (looksLikeTable(data)) {
		event.preventDefault();
	} else {
		return;
	}

	var rows = data.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 markdownRows = rows.map(function (row, rowIndex) {

		return (
			"| " +
			row
				.map(function (column, index) {
					return column + Array(columnWidths[index] - column.length + 1).join(" ");
				})
				.join(" | ") +
			" |"
		);
		row.map;
	});
	markdownRows.splice(
		1,
		0,
		"|" +
			columnWidths
				.map(function (width, index) {
					return Array(columnWidths[index] + 3).join("-");
				})
				.join("|") +
			"|"
	);

	event.target.value = markdownRows.join("\n");
	return false;
});

書き方はやや古めです。必要に応じて書き直してください

html

<textarea id="editor"></textarea>

指定したidを与えたtextareaを用意すれば完成です

via

copy-excel-paste-markdown(via:moongift.jp)