【Googleドキュメント】Apps Scriptで本文中の特定キーワードに自動リンク!社内Wiki連携

【Googleドキュメント】Apps Scriptで本文中の特定キーワードに自動リンク!社内Wiki連携
🛡️ 超解決

社内Wikiやナレッジベースの記事番号を毎回手動でリンクに変換する作業に、時間を取られていませんか。Googleドキュメントの本文に特定キーワード(例:「KB-1234」「プロジェクト名」)が出現するたびに、リンクを貼り直すのは非効率です。この記事では、Apps Scriptを使って本文中のキーワードを自動的に検出し、社内WikiのURLに変換する方法を解説します。スクリプトを一度設定すれば、ドキュメントを開くたびにリンクが自動更新され、手作業から解放されます。

【要点】Apps Scriptでキーワード自動リンクを実現する方法

  • onOpenトリガーとカスタムメニュー: ドキュメントを開くたびにメニューを追加し、いつでもリンク更新を実行できるようにします。
  • 正規表現によるキーワード検出: パターンに一致するテキストを本文全体から探し、見つけた要素にsetLinkUrlでリンクを設定します。
  • 設定用シートで管理: キーワードとURLの対応表をGoogleスプレッドシートに用意し、スクリプトから読み込むことでメンテナンスを容易にします。

ADVERTISEMENT

自動リンクスクリプトの仕組みと事前準備

このスクリプトは、Googleドキュメントの本文テキストから特定のパターン(例:KB-数字)を正規表現で検索し、該当部分をハイパーリンクに置き換えます。リンク先のURLは、キーワードに対応する社内Wikiのアドレスです。スクリプトは関連するGoogleドキュメントのスクリプトエディタに記述し、onOpenトリガーでメニューを追加します。

事前に、キーワードとURLの対応表を記録したスプレッドシートを用意してください。シート名は「Keywords」とし、A列に正規表現パターン(例:KB-\d{4})、B列にリンク先URL(例:https://wiki.example.com/wiki/KB-1234)を入力します。このシートは、ドキュメントと同じGoogleアカウントでアクセス可能にしておきます。

Apps Scriptで自動リンク機能を実装する手順

以下では、具体的なスクリプトコードと設定手順を説明します。スクリプトエディタの開き方から、メニューの追加、リンク処理の実行までを順に進めます。

スクリプトエディタを開く

  1. 拡張機能メニューを開く
    Googleドキュメントのメニューバーから「拡張機能」をクリックし、「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。
  2. プロジェクトに名前を付ける
    左上の「無題のプロジェクト」をクリックし、「自動リンクスクリプト」など任意の名前を入力します。

スクリプトコードを記述する

  1. コード.gsにサンプルコードを貼り付ける
    以下のコードをエディタにコピーして貼り付けます。コードの詳細はコメントで説明します。
/**
 * ドキュメントを開いたときにカスタムメニューを追加する
 */
function onOpen() {
  DocumentApp.getUi()
      .createMenu('自動リンク')
      .addItem('キーワードをリンクに変換', 'addLinks')
      .addToUi();
}

/**
 * 本文中のキーワードをリンクに変換するメイン関数
 */
function addLinks() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  
  // スプレッドシートからキーワードとURLの対応を取得
  var ss = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID');
  var sheet = ss.getSheetByName('Keywords');
  var data = sheet.getDataRange().getValues();
  
  // 各行のパターンとURLを処理
  for (var i = 0; i < data.length; i++) {
    var pattern = data[i][0];
    var url = data[i][1];
    if (!pattern || !url) continue;
    
    // 本文からパターンに一致するテキストを検索
    var searchResult = body.findText(pattern);
    while (searchResult) {
      var element = searchResult.getElement();
      var startOffset = searchResult.getStartOffset();
      var endOffset = searchResult.getEndOffsetInclusive();
      
      // テキスト要素にリンクを設定
      if (element.editAsText()) {
        element.asText().setLinkUrl(startOffset, endOffset, url);
      }
      
      // 次の一致を検索(同じ範囲を避けるため開始位置を進める)
      searchResult = body.findText(pattern, searchResult);
    }
  }
  
  DocumentApp.getUi().alert('リンク変換が完了しました。');
}
  1. スプレッドシートIDを設定する
    コード中の 'YOUR_SPREADSHEET_ID' を、実際に用意したスプレッドシートのIDに置き換えます。IDはスプレッドシートのURLの /d//edit の間にある文字列です。
  2. スクリプトを保存する
    Ctrl+S(Windows)またはCmd+S(Mac)で保存します。初回保存時はプロジェクト名の確認が表示されますので、「OK」をクリックします。

スクリプトを実行して権限を承認する

  1. 関数を選択して実行する
    エディタ上部の関数ドロップダウンから「addLinks」を選択し、再生ボタン(▶)をクリックします。初回実行時は権限の承認が求められます。
  2. 権限を確認して承認する
    「このアプリは確認されていません」という画面が表示されたら「詳細」をクリックし、「(プロジェクト名)に移動」を選択します。必要な権限(ドキュメントの表示・編集、スプレッドシートの表示)を確認し、「許可」をクリックします。
  3. 実行結果を確認する
    権限承認後、スクリプトが実行され、ドキュメント内のキーワードがリンクに変換されます。変換が完了すると「リンク変換が完了しました。」とダイアログが表示されます。

メニューからいつでも実行できるようにする

  1. ドキュメントを再読み込みする
    スクリプトエディタを閉じ、Googleドキュメントのタブをリロードします。メニューバーに「自動リンク」というメニューが追加されています。
  2. メニューからリンク変換を実行する
    「自動リンク」→「キーワードをリンクに変換」をクリックするだけで、いつでもリンク更新を実行できます。

注意点とよくあるトラブル

スクリプトを運用する上で、以下の点に注意してください。特に権限やパフォーマンスに関する問題が発生しやすい部分です。

スクリプトが権限エラーで実行できない

スプレッドシートのIDが間違っているか、アクセス権限がないとエラーになります。スプレッドシートの共有設定を確認し、スクリプトを実行するGoogleアカウントが編集者以上になっていることを確認してください。また、IDはURLの /d//edit の間の部分を正確にコピーします。

リンクが正しく設定されない(文字が欠ける)

正規表現パターンがテキストの一部だけに一致している可能性があります。例えば「KB-1234」というテキストに対してパターンが「KB-\d」だと「4」だけに一致します。パターンは対象テキスト全体をキャプチャするように記述してください。テストパターンは正規表現テスターで事前に確認することをおすすめします。

大量のリンク変換で処理が遅い

本文が非常に長い場合やキーワードの数が多い場合、処理に時間がかかることがあります。その場合は、DocumentApp.flush() をループ内に追加して変更を逐次反映させると改善する場合があります。また、キーワードの数を絞り込むことも検討してください。

ADVERTISEMENT

手動リンクとスクリプト自動リンクの比較

項目 手動リンク スクリプト自動リンク
作業時間 キーワードごとに数秒〜数十秒 スクリプト実行で一括処理(長文でも数秒)
一貫性 人によるミスや抜けが発生しやすい 同じルールで確実にリンクを付与
メンテナンス性 URL変更時に全ドキュメントを手動修正 スプレッドシートのURLを変更するだけで全ドキュメントに反映
初期設定 不要 スクリプトとスプレッドシートの準備が必要

この表から、初期設定に手間がかかるものの、長期的には自動リンクの方が効率的でミスも減らせることがわかります。特に社内Wikiのような頻繁に更新されるリンクを多数扱う場合、スクリプト自動リンクの導入メリットは大きいです。

まとめ

この記事では、GoogleドキュメントでApps Scriptを使用して本文中の特定キーワードを自動的にリンクに変換する方法を解説しました。onOpenトリガーでメニューを追加し、正規表現でキーワードを検出、setLinkUrlでリンクを設定するスクリプトを実装しました。リンク先のURLはスプレッドシートで一元管理できるため、メンテナンスも容易です。次に、このスクリプトを応用して、複数のドキュメントで同じリンクルールを共有する仕組みや、トリガーを時間ベースにして定期的にリンクを更新する方法も検討してみてください。


ADVERTISEMENT

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

超解決 第一編集部

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

SPONSORED