社内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で自動リンク機能を実装する手順
以下では、具体的なスクリプトコードと設定手順を説明します。スクリプトエディタの開き方から、メニューの追加、リンク処理の実行までを順に進めます。
スクリプトエディタを開く
- 拡張機能メニューを開く
Googleドキュメントのメニューバーから「拡張機能」をクリックし、「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。 - プロジェクトに名前を付ける
左上の「無題のプロジェクト」をクリックし、「自動リンクスクリプト」など任意の名前を入力します。
スクリプトコードを記述する
- コード.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('リンク変換が完了しました。');
}
- スプレッドシートIDを設定する
コード中の'YOUR_SPREADSHEET_ID'を、実際に用意したスプレッドシートのIDに置き換えます。IDはスプレッドシートのURLの/d/と/editの間にある文字列です。 - スクリプトを保存する
Ctrl+S(Windows)またはCmd+S(Mac)で保存します。初回保存時はプロジェクト名の確認が表示されますので、「OK」をクリックします。
スクリプトを実行して権限を承認する
- 関数を選択して実行する
エディタ上部の関数ドロップダウンから「addLinks」を選択し、再生ボタン(▶)をクリックします。初回実行時は権限の承認が求められます。 - 権限を確認して承認する
「このアプリは確認されていません」という画面が表示されたら「詳細」をクリックし、「(プロジェクト名)に移動」を選択します。必要な権限(ドキュメントの表示・編集、スプレッドシートの表示)を確認し、「許可」をクリックします。 - 実行結果を確認する
権限承認後、スクリプトが実行され、ドキュメント内のキーワードがリンクに変換されます。変換が完了すると「リンク変換が完了しました。」とダイアログが表示されます。
メニューからいつでも実行できるようにする
- ドキュメントを再読み込みする
スクリプトエディタを閉じ、Googleドキュメントのタブをリロードします。メニューバーに「自動リンク」というメニューが追加されています。 - メニューからリンク変換を実行する
「自動リンク」→「キーワードをリンクに変換」をクリックするだけで、いつでもリンク更新を実行できます。
注意点とよくあるトラブル
スクリプトを運用する上で、以下の点に注意してください。特に権限やパフォーマンスに関する問題が発生しやすい部分です。
スクリプトが権限エラーで実行できない
スプレッドシートのIDが間違っているか、アクセス権限がないとエラーになります。スプレッドシートの共有設定を確認し、スクリプトを実行するGoogleアカウントが編集者以上になっていることを確認してください。また、IDはURLの /d/ と /edit の間の部分を正確にコピーします。
リンクが正しく設定されない(文字が欠ける)
正規表現パターンがテキストの一部だけに一致している可能性があります。例えば「KB-1234」というテキストに対してパターンが「KB-\d」だと「4」だけに一致します。パターンは対象テキスト全体をキャプチャするように記述してください。テストパターンは正規表現テスターで事前に確認することをおすすめします。
大量のリンク変換で処理が遅い
本文が非常に長い場合やキーワードの数が多い場合、処理に時間がかかることがあります。その場合は、DocumentApp.flush() をループ内に追加して変更を逐次反映させると改善する場合があります。また、キーワードの数を絞り込むことも検討してください。
ADVERTISEMENT
手動リンクとスクリプト自動リンクの比較
| 項目 | 手動リンク | スクリプト自動リンク |
|---|---|---|
| 作業時間 | キーワードごとに数秒〜数十秒 | スクリプト実行で一括処理(長文でも数秒) |
| 一貫性 | 人によるミスや抜けが発生しやすい | 同じルールで確実にリンクを付与 |
| メンテナンス性 | URL変更時に全ドキュメントを手動修正 | スプレッドシートのURLを変更するだけで全ドキュメントに反映 |
| 初期設定 | 不要 | スクリプトとスプレッドシートの準備が必要 |
この表から、初期設定に手間がかかるものの、長期的には自動リンクの方が効率的でミスも減らせることがわかります。特に社内Wikiのような頻繁に更新されるリンクを多数扱う場合、スクリプト自動リンクの導入メリットは大きいです。
まとめ
この記事では、GoogleドキュメントでApps Scriptを使用して本文中の特定キーワードを自動的にリンクに変換する方法を解説しました。onOpenトリガーでメニューを追加し、正規表現でキーワードを検出、setLinkUrlでリンクを設定するスクリプトを実装しました。リンク先のURLはスプレッドシートで一元管理できるため、メンテナンスも容易です。次に、このスクリプトを応用して、複数のドキュメントで同じリンクルールを共有する仕組みや、トリガーを時間ベースにして定期的にリンクを更新する方法も検討してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
