【Googleドキュメント】Apps Scriptで本文中のテンプレート変数を一括置換!プレースホルダーの活用

【Googleドキュメント】Apps Scriptで本文中のテンプレート変数を一括置換!プレースホルダーの活用
🛡️ 超解決

Googleドキュメントでテンプレート文書を作成していると、{名前}や{会社名}といったプレースホルダーを毎回手動で置き換える手間が発生します。この作業は単純ですが、多数の文書を扱うとミスも起こりやすくなります。そんなときに役立つのがApps Scriptです。本記事では、Apps Scriptを使ってプレースホルダーを一括置換する具体的な方法を解説します。これを覚えれば、テンプレートのカスタマイズ作業を完全に自動化できます。

【要点】プレースホルダー一括置換のための3つのポイント

  • DocumentApp.replaceTextメソッド: 文書内の特定文字列をすべて置換する基本関数で、正規表現も使用できます。
  • 正規表現によるパターン置換: 複数のプレースホルダーを一度に置換したい場合、正規表現で共通パターンを指定すると効率的です。
  • 外部データからの値取得: スプレッドシートやフォームの入力値をスクリプトで読み込み、動的に置換することで再利用性が高まります。

ADVERTISEMENT

Apps Scriptでプレースホルダーを置換する基本的な仕組み

Apps ScriptはGoogleのサービスを自動化するためのJavaScriptベースのプラットフォームです。Googleドキュメントでは、DocumentAppクラスを使って文書の内容を操作できます。プレースホルダーの置換には、BodyオブジェクトのreplaceText()メソッドを使用します。このメソッドは、検索文字列と置換文字列を指定すると、文書内の該当するテキストをすべて置換します。また、第2引数に正規表現を用いることも可能で、柔軟なパターンマッチングが行えます。

テンプレート変数を一括置換する具体的な手順

  1. スクリプトエディタを開く
    Googleドキュメントを開き、メニューバーから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
  2. プロジェクト名を設定する
    スクリプトエディタ左上の「無題のプロジェクト」をクリックし、わかりやすい名前(例:「プレースホルダー置換」)に変更します。
  3. 置換ロジックを記述する
    コード.gsファイルに以下の関数を記述します。この例では{名前}と{会社名}をそれぞれ所定の値に置換します。
    function replacePlaceholders() {
      var doc = DocumentApp.getActiveDocument();
      var body = doc.getBody();
      body.replaceText('{名前}', '山田太郎');
      body.replaceText('{会社名}', '株式会社サンプル');
    }
  4. スクリプトを保存する
    Ctrl+S(Macの場合はCmd+S)で保存します。初回はプロジェクト名が自動で付きます。
  5. 関数を実行する
    スクリプトエディタのツールバーにある「実行」ボタン(▶)をクリックします。初回実行時は権限の承認ダイアログが表示されるので、「許可を確認」→「許可」をクリックします。実行後、元のドキュメントに戻るとプレースホルダーが置換されていることを確認できます。

正規表現を使って複数のプレースホルダーを一括置換する

プレースホルダーが大量にある場合、個別にreplaceTextを書くのは非効率です。そこで、正規表現を使ってすべての{…}形式の文字列を一度に置換する方法を紹介します。以下の関数では、正規表現/\{[^}]+\}/gを使って波カッコで囲まれた部分を検出し、別途用意したマッピングオブジェクトをもとに置換します。

function replaceAllPlaceholdersWithMap() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var map = {
    '{名前}': '山田太郎',
    '{会社名}': '株式会社サンプル',
    '{役職}': '部長',
    '{日付}': '2025/3/14'
  };
  for (var key in map) {
    body.replaceText(key, map[key]);
  }
}

この方法では、マップオブジェクトに置換対象を列挙することで、コードのメンテナンス性が向上します。また、正規表現を直接使う場合はbody.replaceText('\\{[^}]+\\}', '置換後')と記述しますが、すべて同じ文字列に置換されるため注意が必要です。

置換処理で発生しやすいミスと注意点

プレースホルダーが置換されない

原因として、プレースホルダーの表記が異なる(全角と半角の混在)や、テキストがヘッダーやフッターにある可能性が考えられます。replaceTextは本文のみを対象としているため、ヘッダーやフッター内のプレースホルダーは置換されません。これらも置換したい場合は、HeaderSectionFooterSectionに対しても同様のメソッドを呼び出す必要があります。

正規表現の特殊文字をエスケープしていない

プレースホルダーにドル記号($)やバックスラッシュ(\)が含まれている場合、正規表現の特殊文字と解釈されてエラーになることがあります。特殊文字を含む文字列を置換する場合は、String.replace()のように事前にエスケープ処理を施すか、replaceTextの第1引数にそのままリテラル文字列を渡すようにします。正規表現を使わない場合は、第3引数にfalseを指定してリテラル検索にすることも可能ですが、replaceTextのデフォルトは正規表現なので注意が必要です。

大量の置換で処理が遅くなる

文書が非常に長い場合や置換回数が多い場合、スクリプトの実行時間が制限(6分)を超える可能性があります。そのような場合は、Batch Update機能(Document Serviceのアドバンストサービス)を利用するか、置換対象を絞って複数回に分けて実行することを検討してください。

ADVERTISEMENT

手動置換とスクリプト置換の比較

項目 手動置換 Apps Scriptによる置換
作業速度 数秒〜数分(文書量に依存) 瞬時(通常1秒未満)
精度 見落としや打ち間違いのリスクあり 100%正確に置換
再利用性 毎回手作業が必要 スクリプトを保存しておけば何度でも実行可能
応用範囲 単純置換のみ 条件分岐や外部データ連携が可能
初期学習コスト 不要 スクリプトの記述が必要

まとめ

本記事では、GoogleドキュメントのApps Scriptを使ってプレースホルダーを一括置換する方法をご紹介しました。replaceTextメソッドを利用すれば、{名前}のようなテンプレート変数を正確かつ迅速に置換できます。また、正規表現やデータマップを組み合わせることで、より複雑な置換処理にも対応可能です。次は、スプレッドシートから値を読み込んで一括置換する機能や、トリガーを使って自動実行する仕組みにも挑戦してみてください。これらのテクニックを使いこなせば、文書作成の効率が格段に向上します。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED