GoogleスプレッドシートでMarkdownテーブルを変換する方法
はじめに
生成AIを使っているとMarkdownテーブルが出力されてくる場合があります。その内容をスプレッドシートにして活用する。note.comのようにMarkdownテーブルのサポートがないところにブログ記事を投稿する場合に、スプレッドシートでレンダリングして画像として貼り付ける。このような作業が増えました。
この記事ではGoogleスプレッドシートでMarkdownテーブルを簡単に変換できる方法を紹介します。この方法を使えば、Markdownで書かれたテーブルを素早くスプレッドシート形式に変換できます。
実装手順
1. Googleスプレッドシートの準備
- 新規スプレッドシートを作成するか、既存のものを開きます
- メニューから「拡張機能」→「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. スプレッドシートの設定
- A1セルを選択し、サイズを大きく拡大します
- A1セルに「ここにMarkdownテーブルをペーストしてください」と入力します
使用方法
- A1セルにMarkdownテーブルをペーストします
- 「Markdown変換」メニューから「Markdownテーブルを変換」を選択します
- 新しいシートが作成され、変換されたテーブルが表示されます
注意点
- 大きなテーブルの場合、処理に時間のかかる可能性があります
- エラーが発生した場合は、スクリプトエディタのログを確認してください
- 複雑な書式や特殊なケースには対応していない可能性があります
まとめ
この方法を使えば、GoogleスプレッドシートでMarkdownテーブルを簡単に変換できます。必要に応じてカスタマイズを加え、より使いやすいツールにしていくことができるでしょう。
この記事は、Perplexity AI(バージョン: 2024-07-25)を使用して生成し、人間が編集しました。