1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoogleスプレッドシートでMarkdownテーブルを変換する方法

はじめに

生成AIを使っているとMarkdownテーブルが出力されてくる場合があります。その内容をスプレッドシートにして活用する。note.comのようにMarkdownテーブルのサポートがないところにブログ記事を投稿する場合に、スプレッドシートでレンダリングして画像として貼り付ける。このような作業が増えました。

この記事ではGoogleスプレッドシートでMarkdownテーブルを簡単に変換できる方法を紹介します。この方法を使えば、Markdownで書かれたテーブルを素早くスプレッドシート形式に変換できます。

実装手順

1. Googleスプレッドシートの準備

  1. 新規スプレッドシートを作成するか、既存のものを開きます
  2. メニューから「拡張機能」→「Apps Script」を選択し、スクリプトエディタを開きます

2. コードの実装

スクリプトエディタに以下の関数を追加します:

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Markdown変換')
    .addItem('Markdownテーブルを変換', 'convertMarkdownTable')
    .addToUi();
}

function convertMarkdownTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const markdownText = sheet.getRange('A1').getValue();
  
  if (!markdownText) {
    SpreadsheetApp.getUi().alert('A1セルにMarkdownテーブルを入力してください。');
    return;
  }

  const newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('変換結果_' + new Date().toLocaleString());
  importMarkdownTable(markdownText, newSheet);
}

function importMarkdownTable(markdownTable, sheet) {
  const parsedTable = parseMarkdownTable(markdownTable);
  
  sheet.getRange(1, 1, 1, parsedTable.headers.length).setValues([parsedTable.headers]);
  sheet.getRange(2, 1, parsedTable.data.length, parsedTable.headers.length).setValues(parsedTable.data);
  
  parsedTable.alignments.forEach((alignment, index) => {
    const column = sheet.getRange(1, index + 1, sheet.getLastRow(), 1);
    switch(alignment) {
      case 'center':
        column.setHorizontalAlignment('center');
        break;
      case 'right':
        column.setHorizontalAlignment('right');
        break;
      default:
        column.setHorizontalAlignment('left');
    }
  });
  
  sheet.getRange(1, 1, 1, parsedTable.headers.length).setFontWeight('bold');
}

function parseMarkdownTable(markdownTable) {
  const rows = markdownTable.trim().split('\n');
  const headerRow = rows.split('|').map(cell => cell.trim());
  const alignmentRow = rows[1].split('|').map(cell => cell.trim());
  const dataRows = rows.slice(2).map(row => row.split('|').map(cell => cell.trim()));

  const alignments = alignmentRow.map(cell => {
    if (cell.startsWith(':') && cell.endsWith(':')) return 'center';
    if (cell.endsWith(':')) return 'right';
    return 'left';
  });

  return {
    headers: headerRow,
    alignments: alignments,
    data: dataRows
  };
}

3. スプレッドシートの設定

  1. A1セルを選択し、サイズを大きく拡大します
  2. A1セルに「ここにMarkdownテーブルをペーストしてください」と入力します

使用方法

  1. A1セルにMarkdownテーブルをペーストします
  2. 「Markdown変換」メニューから「Markdownテーブルを変換」を選択します
  3. 新しいシートが作成され、変換されたテーブルが表示されます

注意点

  • 大きなテーブルの場合、処理に時間のかかる可能性があります
  • エラーが発生した場合は、スクリプトエディタのログを確認してください
  • 複雑な書式や特殊なケースには対応していない可能性があります

まとめ

この方法を使えば、GoogleスプレッドシートでMarkdownテーブルを簡単に変換できます。必要に応じてカスタマイズを加え、より使いやすいツールにしていくことができるでしょう。


この記事は、Perplexity AI(バージョン: 2024-07-25)を使用して生成し、人間が編集しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?