Home
>
Product
>
Template Top
>
詳細ページ

GASライブラリ活用:スプレッドシート上のURLリストのリンク切れを自動チェックする方法

ウェブサイトの運営やSEO対策において、リンク切れ(404エラー)のチェックは欠かせない作業です。しかし、何百ものURLを手動で一つずつ開いて確認するのは非常に手間がかかります。

今回は、GoogleスプレッドシートのA列に並んだURLリストを自動で巡回し、その結果(HTTPステータスコード)をB列に書き出してくれる便利なGASライブラリのコードをご紹介します。

Demo Video

Detail

ライブラリの目的

このライブラリの主な目的は、スプレッドシートに記載されたURLが現在アクセス可能かどうか(生きているか死んでいるか)を自動で判定することです。

UrlFetchAppというGASの標準機能を使用し、各URLに実際にアクセスを試みます。その結果返ってきたHTTPステータスコード(例:200 OK, 404 Not Found, 500 Server Errorなど)を取得し、隣のセルに「✅ OK (200)」や「❌ 404 Not Found」といった分かりやすい形式で記録します。

主なユースケース

このライブラリは、以下のような場面で非常に役立ちます。

  • サイトリニューアル時のリンク切れ確認ウェブサイトのリニューアル後、旧ページから新ページへのリダイレクトが正しく設定されているか、あるいは存在しなくなったページが404を返しているかを一括で確認できます。
  • SEO・被リンクの管理自サイトが外部リンクを貼っているページや、逆に自サイトにリンクを貼ってくれている(被リンク)ページのリストを定期的にチェックし、リンク切れによるSEO評価の低下を防ぎます。
  • ブログ記事の公開前チェック記事内に記載した参照URLや画像リンクが、公開前にすべて正しくアクセスできるかを確認する作業(校正)を効率化できます。
  • エラーページの棚卸しcheck404Only関数を使えば、大量のURLリストの中から「404エラーになっているURLだけ」を素早く抽出できます。

ライブラリの使い方(セットアップ)

このライブラリ(ID: 1mTRw0sYI7DHJ9psMiSIZ0owuExPQ3eaLAFSyu5TYnbclwp9TMBWjxwJj)はすでに公開されているため、ご自身のスプレッドシートで以下の手順を踏むだけですぐに利用できます。

  1. スプレッドシートとスクリプトエディタを開くURLチェックを行いたいGoogleスプレッドシートを開きます。上部メニューの「拡張機能」>「Apps Script」を選択し、スクリプトエディタを開きます。
  2. ライブラリを追加するスクリプトエディタの左側メニューにある「ライブラリ」の横の「+」アイコンをクリックします。「スクリプトID」の入力欄に、以下のIDを貼り付けます。1mTRw0sYI7DHJ9psMiSIZ0owuExPQ3eaLAFSyu5TYnbclwp9TMBWjxwJj「検索」ボタンを押し、ライブラリ(URLChecker)が見つかったら、「追加」ボタンを押します。(注:識別子はデフォルトで URLChecker になりますが、ご自身で MyChecker など自由な名前に変更しても構いません。以降の説明は URLChecker を前提とします)
  3. サンプルコードを貼り付けるコード.gs などのファイルに、以下の「呼び出し用コード」を貼り付けます。これは、ライブラリの機能を「実行」するためのスイッチの役割を果たします。

/**
 * [checkURLsInColumnA を実行します]
 * 現在アクティブなシート(開いているシート)のURLをすべてチェックします。
 */
function runCheckOnActiveSheet() {
  // 1. 現在アクティブなシートを取得します
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 2. ライブラリ関数を実行します('URLChecker'はライブラリ追加時の識別子です)
  URLChecker.checkURLsInColumnA(sheet);
}

/**
 * [check404Only を実行します]
 * 現在アクティブなシートのURLをチェックし、404エラーのみをマークします。
 */
function run404CheckOnActiveSheet() {
  // 1. 現在アクティブなシートを取得します
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 2. ライブラリ関数を実行します
  URLChecker.check404Only(sheet);
}

/**
 * スプレッドシートを開いた時(またはリロードした時)に
 * カスタムメニューを自動で追加します。
 */
function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('カスタムURLチェック')
      .addItem('全URLをチェック', 'runCheckOnActiveSheet')
      .addItem('404エラーのみチェック', 'run404CheckOnActiveSheet')
      .addToUi();
}
  1. 保存して実行するスクリプトを保存します(フロッピーアイコン)。スプレッドシートに戻り、ページを**リロード(再読み込み)**します。上部メニューに「カスタムURLチェック」という項目が追加されます。チェックしたいURLをA列に貼り付けたシートを開いた状態で、このカスタムメニューから実行したい機能(例:「全URLをチェック」)を選択すれば、自動で処理が開始されます。

ライブラリコードの内部解説

このライブラリは、主に2つの関数を提供しています。

1. checkURLsInColumnA(sheet)

この関数は、渡されたシートのA列を上から順にチェックし、すべてのHTTPステータスコードをB列に記録します。

  • sheet.getRange("A:A").getValues() でA列の全データを取得します。
  • forループで1行ずつURLを取り出します。
  • UrlFetchApp.fetch(url, options) で実際にHTTPリクエストを送信します。
  • muteHttpExceptions: true オプションが非常に重要です。これが true だと、404や500エラーが発生してもスクリプトが停止せず、エラー情報(ステータスコード)を取得できます。
  • headers: {'User-Agent': ...} を設定しています。一部のサーバーは、GASからのアクセス(標準のUser-Agent)をボットと見なして拒否することがあるため、一般的なブラウザ(Mozilla)を偽装しています。
  • response.getResponseCode() でステータスコード(200, 404など)を取得します。
  • results.push(...) で結果を配列に一時保存し、最後に resultRange.setValues(results) でB列に一括書き込みしています(1行ずつ書き込むより高速なため)。
  • Utilities.sleep(200) で、各リクエストの間に200ミリ秒(0.2秒)の待機時間を設けています。これは、短時間に大量のリクエストを送って相手サーバーに負荷をかけすぎないための重要な「レート制限」対策です。

2. check404Only(sheet)

この関数の基本的な構造は checkURLsInColumnA と同じですが、結果を書き込むロジックだけが異なります。

  • ステータスコードが 404 の場合のみ results.push(['❌ 404 Not Found']) で記録します。
  • それ以外(200 OKなど)の場合は results.push(['']) となり、B列には何も書き込まれません。

これにより、エラーが発生しているURLだけがB列にリストアップされ、問題のある箇所を素早く特定できます。

Source Code

HTML
CSS
Javascript

FAQ

このURLチェッカーは、Googleスプレッドシートの標準機能(=ISURLのような組み込み関数)ですか?

いいえ、違います。これはGoogle Apps Script(GAS)のサードパーティ製ライブラリ(URLChecker)です。利用するには、記事の手順(スプレッドシートでApps Scriptを開く → スクリプトIDでライブラリを追加 → 呼び出し用コードを貼り付ける)に従って、ご自身でセットアップを行う必要があります。

スクリプトを実行すると、URL1件ごとに少し待機(ポーズ)しているようで、処理が遅く感じます。これは仕様ですか?

はい、意図的な仕様です。記事の「内部解説」セクションで説明されている通り、Utilities.sleep(200)という処理により、各URLのリクエスト後に0.2秒間の待機時間を設けています。これは、短時間に大量のリクエストを送信して相手(チェック先)のサーバーに過度な負荷をかけないための重要な「レート制限」対策です。

「404エラーのみチェック」(run404CheckOnActiveSheet) を実行したら、以前「全URLをチェック」で表示されていた「✅ OK (200)」の表示が消えてしまいました。

はい、それは意図された動作です。記事の「2. check404Only(sheet)」の解説にある通り、この関数はステータスコードが404のURLのB列にのみ「❌ 404 Not Found」と書き込みます。 それ以外(200 OKなど)のURLのB列には、空の文字列([''])を書き込む仕様になっているため、既存の「OK」表示は上書きされて消えます。これにより、B列には404エラーが発生している箇所だけが残ります。