最近、何かと騒がれているchatGPT。

私も時代に取り残されてはいけないといろいろがちゃがちゃやってみたけど、すごいけど不便というか信用できないところがまだまだ多いようです。

特に情報をさがしていて、ピタっと情報を探してきてくれることもあるが、ほとんどの場合1発でOKな内容、情報を持ってくることはありません。

特に個人情報は弱いのと、見解を求めるようなものについては苦手なようです。

そんなchatGPTでよく聞くのが、「プログラムも自分でコードを作ってくれるから便利!」という声です。

おおっ、これはすごいと私のほうでsitemap.xmlファイルを簡単に作れるマクロコードを作ってもらいました。

1.sitemap.xmlを作ってくれるエクセルマクロ

1つのエクセルでシートが2つになっています。

まずSheet1にxmlで作成したいURLをA1セルから貼り付けます。

セルはAの列にURL、Bの列にpriority、Cの列に更新頻度を書きます。

ここにURLをかいたら、Sheet2にあるボタンを押します。↓

これだけでsitemap.xmlファイルができてしまう代物です。

マクロのコードは、以下の通り↓↓↓

Sub Generate_Sitemap()
Dim fso As Object
Dim file As Object
Dim folder As Object
Dim ws As Worksheet
Dim url As String
Dim priority As String
Dim changefreq As String
Dim i As Integer
Dim lastrow As Long

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.CreateFolder("C:\Sitemap")

Set file = fso.CreateTextFile("C:\Sitemap\sitemap.xml", True)
file.WriteLine "<?xml version=""1.0"" encoding=""UTF-8""?>"
file.WriteLine "<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">"

Set ws = ThisWorkbook.Sheets("Sheet1")
lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For i = 2 To lastrow
    url = ws.Cells(i, 1).Value
    priority = ws.Cells(i, 2).Value '優先度を取得します。
    changefreq = ws.Cells(i, 3).Value '更新頻度を取得します。

    '特殊文字をエンコードします。
    url = Replace(url, "&", "&amp;") ' & を &amp; に変換します。

    file.WriteLine "<url>"
    file.WriteLine "<loc>" & url & "</loc>"
    If priority <> "" Then
        file.WriteLine "<priority>" & priority & "</priority>" '優先度を設定します。
    End If
    If changefreq <> "" Then
        file.WriteLine "<changefreq>" & changefreq & "</changefreq>" '更新頻度を設定します。
    End If
    file.WriteLine "</url>"
Next i

file.WriteLine "</urlset>"
file.Close

MsgBox "sitemap.xmlを作成しました。"

End Sub

このコードはchatGPTで作ってあり、自分のPCで検証済みです。sitemap.xmlファイルが一瞬で簡単に作れます。

検証では10,000URL程度でしかやっていませんが、10,000URLを超えるものでも対応できると思います。

2.Sitemap.xmlの生成ルール

注意点1、Sitemap.xmlはgoogleから以下のように上限ルールがありますのでお気をつけください。

  • 1 つのサイトマップに対してサイズに関する上限(圧縮していない状態で 50 MB)
  • URL の件数に関する上限(50,000 件)

ファイルサイズがこれより大きい場合、または URL の件数がこれより多い場合は、サイトマップを複数に分割する必要があります。
または、サイトマップ インデックス ファイルを作成して、そのインデックス ファイルのみを Google に送信することもできます。サイトマップやサイトマップ インデックス ファイルは、Google に複数送信できます。

注意点2として、サイトマップ ファイルは UTF-8 でエンコードされている必要があります。よって&は &amp; と表記しなくてはなりません。 
今回紹介のマクロは&のみ自動で変換されるようになっています。

注意点3として、サイトマップでは、完全修飾された絶対 URL を使用してください。Google は、記載されている URL を正確にクロールします。絶対にURLを相対パスで書かないでください。

もしもマクロ自体作るのも難しいのでこのファイルをくださいという場合はお問合せからご連絡願います。