Googleドキュメントにたくさんのリンクを貼ったものの、どのURLが有効か確認するのに手間取っていませんか。一個ずつクリックしてチェックするのは非効率で、リンク切れを見逃すリスクもあります。Google Apps Scriptを使えば、文中の全リンクを自動で一覧化し、各URLのステータスまでチェックできます。この記事では、スクリプトの作成から実行、結果の活用法までを詳しく解説します。
リンク監査を自動化すれば、手作業の時間を大幅に削減できるだけでなく、リンク切れを確実に発見できます。初心者の方でもステップに沿って進められるよう、コードのコピペも用意しました。ぜひ実際のドキュメントで試してみてください。
【要点】Google Apps ScriptでURL一覧を自動抽出する方法
- スクリプトエディタでコードを貼り付けて実行: 数行のコードでドキュメント内の全リンクを取得できます。実行ボタンを押すだけで結果が新しいシートに出力されます。
- カスタム関数でリンク切れを検出: URLのHTTPステータスを自動でチェックし、有効・無効を判定します。リンク監査の精度が格段に向上します。
- トリガー設定で定期実行: 毎日や毎週の自動実行を仕込めば、常に最新のリンク状態を把握できます。手間いらずで運用できます。
ADVERTISEMENT
目次
Apps Scriptでリンク抽出ができる仕組み
Google Apps Scriptは、Googleドキュメントを含むWorkspaceアプリを操作するJavaScriptベースの開発環境です。ドキュメント内のテキストや要素をプログラムで取得・変更できます。リンク(URL)はドキュメント内でハイパーリンクとして埋め込まれており、Apps ScriptのgetUrl()メソッドを使うことで、各段落やインラインテキストからURLを抽出できます。
抽出したURLは、Googleスプレッドシートに一覧として出力するのが一般的です。さらに、UrlFetchAppを使って各URLにリクエストを送信し、HTTPレスポンスコードを確認することでリンク切れを自動判定できます。この仕組みを使えば、数百ものリンクも数秒でチェックできるようになります。
なお、スクリプトの実行には適切な権限が必要です。最初の実行時に「承認」ダイアログが表示されますので、指示に従って許可してください。
リンク一覧を自動抽出する操作手順
手順1: スクリプトエディタを開く
- 対象のGoogleドキュメントを開く
リンクを抽出したいドキュメントをブラウザで開きます。複数のドキュメントがある場合は、まず1つのドキュメントで試すことをおすすめします。 - 「拡張機能」メニューからスクリプトエディタを起動する
メニューバーで「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - スクリプトファイルの名前を確認する
左側のファイルリストに「コード.gs」が表示されます。そのまま使用するか、わかりやすい名前に変更します。
手順2: リンク抽出用のコードを記述する
- デフォルトのコードをすべて削除する
エディタに最初から書かれているサンプルコードをすべて選択して削除します。 - 以下のコードをコピーして貼り付ける
function extractUrls() { var doc = DocumentApp.getActiveDocument(); var body = doc.getBody(); var paragraphs = body.getParagraphs(); var urls = []; var seen = {}; for (var i = 0; i < paragraphs.length; i++) { var children = paragraphs[i].getChildren(); for (var j = 0; j < children.length; j++) { if (children[j].getType() === DocumentApp.ElementType.TEXT) { var text = children[j].asText(); var url = text.getLinkUrl(); if (url && !seen[url]) { seen[url] = true; urls.push(url); } } } } var sheet = SpreadsheetApp.create("抽出URL一覧_" + new Date().toISOString().slice(0,10)); var sheetActive = sheet.getActiveSheet(); sheetActive.getRange(1,1).setValue("抽出日時"); sheetActive.getRange(1,2).setValue(new Date().toLocaleString()); sheetActive.getRange(2,1).setValue("URL"); for (var k = 0; k < urls.length; k++) { sheetActive.getRange(k+3,1).setValue(urls[k]); } Logger.log("抽出完了: " + urls.length + " 件のURL"); }このコードは、ドキュメント内のすべてのハイパーリンクを重複なく抽出し、新しいスプレッドシートに出力します。
- コードを保存する
ツールバーの保存アイコンをクリックするか、Ctrl+Sで保存します。プロジェクト名は任意で設定できます。
手順3: スクリプトを実行する
- 実行ボタンをクリックする
コードエディタ上部の「▶ 実行」ボタンをクリックします。初回は権限の承認画面が表示されます。 - 必要な権限を承認する
「権限の確認」ダイアログでアカウントを選び、「許可」をクリックします。スクリプトがドキュメントとスプレッドシートにアクセスできるようになります。 - 実行結果を確認する
実行が完了すると、自動的に新しいスプレッドシートが作成されます。シートの1行目に抽出日時、2行目以降にURLの一覧が表示されます。
実用的なカスタマイズと注意点
リンク切れを自動判定するコードを追加する
抽出したURLが有効かどうかを確認するには、各URLにHTTPリクエストを送信してステータスコードを取得します。以下のコードを先ほどの関数の末尾に追加することで、リンク切れのチェックも自動化できます。
function checkUrls() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
var urls = sheet.getRange(3,1,lastRow-2,1).getValues();
sheet.getRange(2,2).setValue("ステータス");
for (var i = 0; i < urls.length; i++) {
var url = urls[i][0];
try {
var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
var code = response.getResponseCode();
sheet.getRange(i+3,2).setValue(code);
} catch(e) {
sheet.getRange(i+3,2).setValue("エラー");
}
}
}
この関数を実行すると、URLの横にHTTPステータスコード(200なら正常、404ならリンク切れ)が記載されます。エラーが発生した場合は「エラー」と表示されます。なお、大量のURLをチェックする場合は、UrlFetchAppの呼び出し回数に制限がある点に注意してください。
トリガーを設定して定期実行する
リンク監査を定期的に行いたい場合は、Apps Scriptのトリガー機能を使います。スクリプトエディタのメニューから「時計アイコン」→「トリガーを追加」をクリックし、実行したい関数(例: extractUrls)と時間間隔(毎日、毎週など)を設定します。これにより、手動で実行しなくても自動的にリンク一覧が更新されます。
大量リンクを扱う場合の注意点
ドキュメントに数千件のリンクがある場合、スクリプトの実行時間が6分を超えるとタイムアウトする可能性があります。その場合は、複数のドキュメントに分割するか、スクリプトを複数回に分けて実行する方法を検討してください。また、UrlFetchAppの同時呼び出し制限(1分あたり最大100回)にも注意が必要です。リンクチェックのコードでは、スリープ時間を入れるなどして負荷を調整してください。
ADVERTISEMENT
手動抽出とスクリプト自動抽出の比較
| 項目 | 手動で一つずつ確認 | Apps Scriptで自動抽出 |
|---|---|---|
| 所要時間(100リンクの場合) | 約30分〜60分 | 数秒〜数分 |
| リンク切れ判定 | 目視チェック(見落としあり) | HTTPステータスコードで自動判定 |
| 重複管理 | 手動で確認・集計 | 自動的に重複排除可能 |
| 定期実行 | 毎回手動で作業 | トリガーで自動化可能 |
| 初期設定の手間 | なし | コード記述と権限承認が必要 |
まとめ
Google Apps Scriptを使えば、Googleドキュメント内のすべてのリンクを自動で抽出し、一覧化できるようになります。手作業では数十分かかる作業が数秒で完了し、リンク切れの検出もHTTPステータスコードで正確に判定できます。初期設定には少し手間がかかりますが、一度仕組みを作れば毎回の更新で大きな時間を節約できます。
さらに、トリガーを設定すればリンク監査を完全に自動化できます。今回紹介したコードをベースに、自分の用途に合わせてカスタマイズしてみてください。例えば、抽出結果をメールで送信する関数や、特定のドメインだけを抽出する処理も追加可能です。ぜひ活用して、リンク管理の効率を向上させてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
