ブログやドキュメントサイトを静的サイトジェネレーターで運用している方の中には、Google ドキュメントで記事を下書きしてからYAMLフロントマターを含むMarkdownに変換したいとお考えの方も多いでしょう。タイトルや作成日、タグといったメタ情報を手動で打ち込むのは非効率です。この記事では、Google ドキュメントからYAMLメタ情報を自動的に抽出し、静的サイトと連携する方法を詳しく解説します。
具体的には、Google Apps Script を使ってドキュメント内の特定のテキストを解析し、YAML形式に整形して出力する手順を紹介します。この方法を覚えれば、毎回手作業でメタデータを書く手間を省き、更新作業を効率化できます。
【要点】Google ドキュメントのテキストからYAMLフロントマターを抽出し、静的サイトに連携する方法
- Apps Script のカスタム関数: ドキュメント内の特定パターン(例:「title:」)を検索し、YAMLブロックを生成します。
- Google ドキュメントのアドオン: 「Docs to Markdown」などの拡張機能を使えば、変換時にメタ情報を自動的に埋め込めます。
- テンプレートを活用した手動抽出: ドキュメントの見出しや表を利用して、YAML要素を整理し、コピー&ペーストで連携します。
ADVERTISEMENT
目次
なぜGoogle ドキュメントからYAMLメタ情報を抽出するのか
静的サイトジェネレーター(Hugo、Jekyll、Next.jsなど)では、各記事の先頭にYAMLフロントマターを記述するのが一般的です。タイトル、日付、タグ、カテゴリなどの情報をこの形式で管理することで、サイトの自動生成や一覧表示が簡単になります。しかし、Google ドキュメントで記事を執筆する場合、メタ情報を後から手動でMarkdownに追加する必要があり、手間とミスの原因となります。
そこで、ドキュメント内にメタ情報を埋め込んでおき、抽出・変換する仕組みを用意すれば、執筆から公開までの流れをスムーズにできます。特にチームで運用する場合、統一されたフォーマットでメタデータを管理できるメリットは大きいです。
Google ドキュメントからYAMLメタ情報を抽出する具体的な手順
方法1:Google Apps Script によるカスタム抽出
最も柔軟な方法は、Google Apps Script を使ってドキュメント内のテキストを解析し、YAMLメタ情報を生成することです。以下の手順で実装します。
- スクリプトエディタを開く
Google ドキュメントを開き、メニューから「拡張機能」→「Apps Script」を選択します。スクリプトエディタが新しいタブで開きます。 - 関数を作成する
エディタに以下のようなコードを記述します。この関数は、ドキュメントの最初の段落から「title:」「date:」など特定のキーワードを探し、YAML形式に整形します。function extractYaml() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var text = body.getText();
var lines = text.split(‘\n’);
var yaml = ”;
for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.match(/^(title|date|tags|category):/i)) { yaml += line + '\n'; } if (line.startsWith('---')) break; } return yaml; } - カスタム関数をドキュメントで使う
スクリプトを保存したら、ドキュメント上で「=extractYaml()」と入力すると、抽出されたYAMLメタ情報が表示されます。ただし、カスタム関数はリアルタイム更新されないため、手動で再計算が必要です。
方法2:アドオン「Docs to Markdown」を利用する
「Docs to Markdown」アドオンは、Google ドキュメントをMarkdownに変換する際、ドキュメントのプロパティ(タイトル、見出しなど)を自動的にYAMLフロントマターとして埋め込めます。
- アドオンをインストールする
Google ドキュメントのメニューから「拡張機能」→「アドオン」→「アドオンを取得」を開き、「Docs to Markdown」を検索してインストールします。 - 変換設定を確認する
アドオン起動後、設定画面で「Include YAML front matter」にチェックを入れます。抽出する項目(タイトル、日付など)をカスタマイズできます。 - 変換を実行する
「Convert」ボタンをクリックすると、Markdownファイルが生成されます。このファイルにはドキュメントのメタ情報がYAML形式で先頭に挿入されています。
方法3:テンプレートを使った手動抽出
スクリプトを使わずに、あらかじめテンプレートを用意してメタ情報を入力する方法です。ドキュメントの先頭にYAML形式のプレースホルダーを用意しておき、執筆後にコピーして使います。
- テンプレートドキュメントを作成する
新しいドキュメントに以下のようなテキストを入力します。—
title: {{タイトル}}
date: {{日付}}
tags: [{{タグ}}]
category: {{カテゴリ}}
— - 記事執筆時にプレースホルダーを置き換える
実際の記事を書くときは、このテンプレートをコピーして、{{ }}内を実際の値に置き換えます。 - 抽出してMarkdownファイルに貼り付ける
完成したYAMLブロックをコピーし、Markdownエディタで記事本文の先頭に貼り付けます。この方法はスクリプト不要で、誰でもすぐに始められます。
抽出時の注意点とよくあるトラブル
抽出対象のテキストが正しく認識されない
Apps Script のパターンマッチが大文字小文字を区別するため、キーワードの表記が統一されていないと抽出漏れが発生します。必ず「Title:」や「title:」など、ドキュメント内で使用する表記を決めておきましょう。また、正規表現で /i フラグを使えば大文字小文字を区別しなくなります。
アドオンの変換結果に不要な情報が含まれる
「Docs to Markdown」はドキュメントのプロパティだけでなく、見出しや段落のスタイル情報も変換することがあります。設定画面で「Include YAML front matter」のみ有効にし、不要な項目はオフにしてください。
テンプレート方式で日付の形式がバラバラになる
日付の形式を「2025-03-28」のようにISO 8601形式に統一しないと、静的サイトジェネレーターでエラーになることがあります。テンプレート内に「date: {{日付}}」と書く代わりに、具体的な書式を例示しておくと安全です。
ADVERTISEMENT
3つの方法の比較
| 方法 | 自動化度 | カスタマイズ性 | 導入のしやすさ |
|---|---|---|---|
| Apps Script | 高い(完全自動) | 非常に高い | 中程度(プログラミング知識が必要) |
| Docs to Markdown | 高い(変換時に自動抽出) | 中程度(設定項目に依存) | 簡単(アドオンインストールのみ) |
| テンプレート方式 | 低い(手動で置き換え) | 高い(自由に書式を決められる) | 最も簡単 |
まとめ
この記事では、Google ドキュメントからYAMLメタ情報を抽出して静的サイトに連携する3つの方法を紹介しました。Apps Script を使えば完全自動化でき、「Docs to Markdown」アドオンならノーコードで実現できます。テンプレート方式は最も簡単で、導入もすぐにできます。
まずはテンプレート方式から試して、作業の流れを把握してみてください。慣れてきたら、Apps Script で自動抽出に挑戦すると、さらに効率的になります。これらの方法を使えば、Google ドキュメントを使った記事作成から静的サイトへの公開まで、一貫したワークフローを構築できます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
