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)