Google Apps ScriptでScrapboxのフィードからsitemap.xmlを生成した
Scrapbox の public プロジェクトを検索エンジンにのせたくて、sitemap.xml を作成してみました。
Google Apps Script をあまり使ったことがないので、ChatGPT に聞いたら実装してくれました。少しだけ手直ししてますが、90%ぐらいは ChatGPT が書いたものです。Google Apps Script で実行すると Google Drive にsitemap.xml
というファイルが作成されます
function myFunction() {
// RSS feed URL
const feedUrl = "https://scrapbox.io/api/feed/mahs-note";
// Base URL of the site
const baseUrl = "https://scrapbox.io/mahs-note";
// Fetch RSS feed
const feed = UrlFetchApp.fetch(feedUrl).getContentText();
const document = XmlService.parse(feed);
const root = document.getRootElement();
const channel = root.getChild("channel");
const items = channel.getChildren("item");
// Create sitemap.xml
var sitemap = '<?xml version="1.0" encoding="UTF-8"?>\n';
sitemap += '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n';
// Add home page to sitemap
sitemap += "<url>\n";
sitemap += "<loc>" + baseUrl + "</loc>\n";
sitemap += "<changefreq>daily</changefreq>\n";
sitemap += "<priority>1.0</priority>\n";
sitemap += "</url>\n";
// Add entries to sitemap
sitemap = items.reduce((accumulator, item) => {
const link = item.getChildText("link");
const updated = item.getChildText("pubDate");
const updatedDate = new Date(updated);
const updatedDateString = updatedDate.toISOString();
accumulator += "<url>\n";
accumulator += "<loc>" + link + "</loc>\n";
accumulator += "<lastmod>" + updatedDateString + "</lastmod>\n";
accumulator += "<changefreq>daily</changefreq>\n";
accumulator += "<priority>0.8</priority>\n";
accumulator += "</url>\n";
return accumulator;
}, sitemap);
sitemap += "</urlset>";
// Save sitemap.xml to Google Drive
DriveApp.createFile("sitemap.xml", sitemap, "application/xml");
Logger.log("Sitemap.xml created");
}