スプレッドシートでURLの各階層を取得する方法

スプレッドシートでURLの階層を抽出する方法 スプシの使い方

Webサイトのデータ分析やSEO施策において、URLの階層構造を理解し分析することは非常に重要です。適切な階層構造は、ユーザビリティの向上とSEO効果の最適化に直接影響を与えます。

本記事では、Googleスプレッドシートを使用してURLの各階層を効率的に抽出・分析する方法を、実践的な例を交えて解説します。

REGEXEXTRACT関数によるURLの階層取得

REGEXEXTRACT関数は、正規表現を使用してURLから必要な部分のみを抽出できる便利な関数です。

以下、各階層の取得方法を順番に説明します。

1階層目(ドメイン)の抽出

=IFERROR(REGEXEXTRACT(A1, "^https?://([^/]+)"), "ドメインが存在しません")

※ A1にURLが入力されている前提です。

解説: URLの `https://` または `http://` に続く、最初の `/` までの部分(ドメイン名)を抽出します。

2階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

解説: ドメインの次の階層(例: `example.com/category/` の `category`)を抽出します。

3階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

解説: 2階層目の次の階層(例: `example.com/category/subcategory/` の `subcategory`)を抽出します。

4階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/[^/]+/[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

5階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/[^/]+/[^/]+/[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

6階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

7階層目の抽出

=IFERROR(REGEXEXTRACT(A1,"^https?://[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/([^/]+)"),"階層が存在しません")

※ A1にURLが入力されている前提です。

FIND関数によるURL内の文字位置検索

FIND関数は、文字列内から特定の文字(ここでは `/`)が何番目にあるかを検索する関数です。単体で階層を直接抽出するわけではありませんが、`MID`関数など他の関数と組み合わせることで、特定の階層文字列を抽出するための位置情報として利用できます。

例えば、URL (`A1`セル) 内の3番目の `/` の位置は以下の式で見つけられます。

=FIND("/", A1, FIND("/", A1, FIND("/", A1, 9) + 1) + 1)

解説: 最初の `/` は `https://` の中のものであるため、`FIND(“/”, A1, 9)` で9文字目以降(`https://` の後)から `/` を探し始めます。これにより、パス部分の区切り文字 `/` の位置を特定するのに役立ちます。

REGEXMATCH関数による特定階層の一致確認

URLが特定の階層数を持つパターンと一致するかどうかを確認する際に使用します。TRUEまたはFALSEを返します。

1階層(ドメインのみ)のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/?$")

※ A1にURLが入力されている前提です。

解説: `example.com` や `example.com/` のようなURLに一致します。

2階層のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/[^/]+/?$")

※ A1にURLが入力されている前提です。

解説: `example.com/category` や `example.com/category/` のようなURLに一致します。

3階層のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/[^/]+/[^/]+/?$")

※ A1にURLが入力されている前提です。

4階層のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/[^/]+/[^/]+/[^/]+/?$")

※ A1にURLが入力されている前提です。

5階層のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/?$")

※ A1にURLが入力されている前提です。

6階層のURLにマッチ

=REGEXMATCH(A1, "^https?://[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/[^/]+/?$")

※ A1にURLが入力されている前提です。

URLデータ処理でよくあるトラブルと解決方法

URLクエリパラメータの除去方法

アクセス解析やSEO分析時に不要なクエリパラメータ(`?`以降の部分)を除外し、基本URLのみを抽出したい場合があります。

=REGEXEXTRACT(A1, "^([^?]+)")

※ A1にURLが入力されている前提です。

解説: URLの先頭から、`?`が現れる直前までの部分を抽出します。`?`がない場合はURL全体が返されます。

スプレッドシートでのURL表記揺れの統一化

大量のURLデータを扱う際、末尾のスラッシュの有無や大文字小文字の違いなど、表記揺れが発生することがあります。これらを統一することで、正確な分析が可能になります。

末尾スラッシュの一括統一(有りへ統一)

=REGEXREPLACE(A1, "/?$", "/")

※ A1にURLが入力されている前提です。

解説: URLの末尾にスラッシュ`/`がない場合は追加し、既にある場合はそのままにします。

URLパス部分の大文字小文字の統一化(小文字へ統一)

一般的にドメイン名以外(パス部分)は、大文字と小文字が区別されることがあります。分析のために小文字に統一します。

=REGEXEXTRACT(A1,"^https?://[^/]+")&LOWER(REGEXREPLACE(A1,"^https?://[^/]+",""))

※ A1にURLが入力されている前提です。

解説: ドメイン部分とパス部分を分け、パス部分のみを`LOWER`関数で小文字に変換し、再度結合します。

特殊文字を含むURLの処理方法(デコード例)

URLエンコードされた特殊文字(例: `%20` はスペース)が含まれている場合、分析しやすいように元の文字に戻したい(デコードしたい)ことがあります。ただし、スプレッドシートの標準関数だけでは完全なURLデコードは難しい場合があります。ここではよくあるスペース(`%20`)を例として示します。

=REGEXREPLACE(A1, "%20", " ")

※ A1にURLが入力されている前提です。

解説: URL内の `%20` を半角スペースに置換します。他の特殊文字も同様に `REGEXREPLACE` や `SUBSTITUTE` を使って置換できます。

複数URLの一括処理テクニック (ARRAYFORMULA)

A列の複数のURL(例: A2からA1000)に対して、同じ処理を一括で行いたい場合、`ARRAYFORMULA` を使うと便利です。各行に関数をコピー&ペーストする必要がなくなります。

例:A2:A1000 の各URLからドメイン名を抽出する場合

=ARRAYFORMULA(IF(A2:A1000="",,IFERROR(REGEXEXTRACT(A2:A1000, "^https?://([^/]+)"), "ドメインが存在しません")))

解説: `ARRAYFORMULA` で囲むことで、`A2:A1000` の範囲に対して `REGEXEXTRACT` を適用します。`IF(A2:A1000=””,, …)` は、元のセルが空欄の場合は結果も空欄にするための処理です。

実践的な活用方法

カテゴリー別(例: 2階層目)のURL分析

`REGEXEXTRACT` で抽出した階層データ(例: B列に2階層目を抽出済みとする)を使って、どのカテゴリーにどれくらいのページが存在するかを集計します。

=QUERY({B2:B1000}, "SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1 ORDER BY COUNT(Col1) DESC LABEL COUNT(Col1) 'ページ数'")

解説: `QUERY`関数を使い、B列のデータをグループ化してカウントし、ページ数が多い順に並べて表示します。

パンくずリスト生成

抽出した各階層のデータを結合して、簡易的なパンくずリストを生成します。サイト構造の可視化に役立ちます。(例: B列に1階層目、C列に2階層目、D列に3階層目を抽出済みとする)

=FILTER(B2:B & " > " & C2:C & " > " & D2:D, B2:B<>"", C2:C<>"", D2:D<>"")

解説: `&` 演算子で各階層の文字列を結合します。ここでは `FILTER` 関数を使い、3階層目まで存在するURLのみを対象としています。(`ARRAYFORMULA` を使っても同様のことが可能です)

まとめ

Googleスプレッドシートの関数を活用してURLの階層構造を適切に分析・処理することで、以下のようなメリットが得られます。

  • サイト構造の問題点の早期発見と改善
  • ユーザー導線の最適化やコンテンツ分類の見直し
  • 検索エンジンからの評価向上(SEO効果)への寄与
  • データに基づいた客観的なサイト改善の実現

補足:状況に応じた関数の使い分け

本記事で紹介した主な関数は、目的に応じて使い分けることが重要です。

  • REGEXEXTRACT: 正規表現を使って、URLから特定のパターン(階層、パラメータなど)を「抽出」したい場合に最適です。複雑なルールの抽出も可能です。
  • REGEXMATCH: 正規表現を使って、URLが特定のパターン(階層数、特定の文字列を含むかなど)に「一致するかどうか」を確認したい場合(TRUE/FALSE)に使用します。
  • REGEXREPLACE: 正規表現を使って、URL内の一部を別の文字列に「置換」したい場合(末尾スラッシュ統一、特殊文字置換など)に使用します。
  • FIND: 特定の文字(例: `/`)がURL内の「どの位置にあるか」を知りたい場合に使用します。`MID`関数などと組み合わせて部分文字列を抽出する際に役立ちます。
  • QUERY, ARRAYFORMULA, LOWER, IFERROR など: これらを組み合わせることで、より高度で効率的なURLデータの集計、整形、一括処理が可能になります。

これらの機能を理解し組み合わせることで、Googleスプレッドシートを使ったURL分析とサイト改善の可能性が大きく広がります。

コメント