【GAS】スプレッドシートからMarkdownのテーブル用のテキストを作る

ネコニウム研究所

PCを利用したモノづくりに関連する情報を掲載するブログ

【GAS】スプレッドシートからMarkdownのテーブル用のテキストを作る

2021-12-23 |

GASを使ってスプレッドシートからMarkdownのテーブル用のテキストを作りたい!

Markdown大好きなんですけど、一度作ったテーブルの編集(特に列の入れ替え)がめちゃくちゃしんどい。このしんどさを解決したい!

概要

GoogleのスプレッドシートとGASを使って、Markdownのテーブル用のテキストを出力するプログラムを作る。

仕様書

  • スプレッドシートでアクティブになってる(選択してる)セルの範囲を読み取り、Markdownのテーブル用のテキストをダイアログに出力する。
  • ダイアログの「Copy」ボタンをクリックすると出力されたテキストがクリップボードにコピーされる。

手順書

スプレッドシートの画面から「拡張機能」->「Apps Script」にアクセスする。

コード.gsに下記を入力して「プロジェクトを保存」する。プロジェクトの名前もつける。今回は「TABLE2MD」とした。

function onOpen(e)
{
  SpreadsheetApp.getUi()
    .createAddonMenu()
    .addItem('Make text for Markdown', 'table2md')
    .addToUi();
}

function table2md()
{
  let sheet = SpreadsheetApp.getActiveSheet();
  let r = sheet.getActiveRange();
  let v = r.getValues();

  let result = "";

  for (var i = 0; i < v.length; i++) {
    result += "|"
    for (var j = 0; j < v[i].length; j++) {
      result += v[i][j] + "|";
    }
    result += "\n";

    if (i == 0) {
      result += "|"
      for (var j = 0; j < v[i].length; j++) {
        result += "---|";
      }
      result += "\n";
    }
  }

  showModalDialog_(result);
}

function showModalDialog_(str)
{
  var contents = '<p>下記をコピペして使って下さい。</p><textarea id="id_textarea" style="width:100%;" rows="24" readonly>'+ str +'</textarea><button onclick="javascript:document.getElementById(' + "'" + 'id_textarea' + "'" + ').select();document.execCommand(' + "'" + 'copy' + "'" + ');">Copy</button>';
  var htmlOutput = HtmlService
    .createHtmlOutput(contents)
    .setWidth(640)
    .setHeight(480);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'TABLE2MD');
}

スプレッドシートのツールバーの拡張機能の中に先程作ったプロジェクト名の項目が追加されてる。(今回は「TABLE2MD」とした)
更にその中に「Make text for Markdown」という項目が増えてるのでこれをクリックする。

クリックするとダイアログが開く。ダイアログの中のテキストエリアにMarkdown用のテキストが出力されてる。「Copy」ボタンをクリックするとテキストがクリップボードにコピーされる。

あとは、REDMINEなり.mdファイルなりにペーストしちゃう!

まとめ(感想文)

即興で適当に作ったわりには個人的にめちゃ便利。

GASは、いろいろできて自由度が高くて面白いなあ。
OfficeScript君…。