[Google Apps Script] Google Apps Script で sitemap.xml から URL とタイトルのリストを生成する
Google Spreadsheet で使う関数を作成します。
> – [Apps Script | Google Developers](https://developers.google.com/apps-script/)
## sitemap.xml から URL リストを取得する
`UrlFetchApp.fetch()` でファイルを取得。
`XmlService` を利用してパースします。
> – [Class XmlService | Apps Script | Google Developers](https://developers.google.com/apps-script/reference/xml-service/xml-service)
とても分かりやすいコードが公開されていましたので利用させて頂きましょう。
> – [Extract URLs from XML Sitemaps in Google sheets – Open Source SEO](http://opensourceseo.org/extract-urls-xml-sitemaps-google-sheets/)
> – [dsottimano/xmlsitemap-extractor-google-sheets](https://github.com/dsottimano/xmlsitemap-extractor-google-sheets/tree/master)
`コード.js` にコードをコピーすれば `sitemap()` 関数が利用できるようになります。
## URL リストから対応する title を取得する
`UrlFetchApp.fetch()` で HTML を取得。
`.match` を利用してマッチした文字列を抜き出します。
> – [String.prototype.match() – JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match)
“`javascript:コード.js
/**
* Return
*
* @param {“https://www.example.com/foo.html”} url REQUIRED The url of the page
* @return Return string from a page title
* @customfunction
*/
function getTitle(url) {
var _options = {
method: “GET”
};
try {
var _response = UrlFetchApp.fetch(url, _options);
var _regexp = /
var _title = _response.getContentText().match(_regexp);
return _title[1];
} catch (e) {
return e;
}
}
“`
コメントを書いておくと関数利用時にヘルプが表示されます。
## 補遺
> – [Google Apps Script でスクレイピングがうまく出来ない場合にチェックするポイント – Qiita](https://qiita.com/DriftwoodJP/items/7f26a625a31845e1665c)