スキップしてメイン コンテンツに移動

GASでXML解析とRSS

GASでXML解析とRSS

XML操作の基礎

Google Apps Script(GAS)でXMLを扱う際の基本的な考え方を整理します。XMLは階層構造を持つデータを表現するために広く使われており、RSSフィードや設定ファイルなど多くの場面で登場します。GAS実践では、XmlServiceクラスを利用してXMLをパースし、要素取得や属性取得を行います。まずはXML文字列をパースする方法を確認しましょう。

XmlServiceでのパースと要素取得

以下のサンプルコードは、XML文字列をパースし、ルート要素と子要素を取得する基本的な流れです。

var xmlString = '<root><item>Hello</item></root>';
var document = XmlService.parse(xmlString);
var root = document.getRootElement();
var items = root.getChildren('item');
items.forEach(function(item) {
  Logger.log(item.getText()); // Hello
});

上記のようにXmlService.parse()でXML文字列をDocumentオブジェクトに変換し、getRootElement()でルート要素を取得します。getChildren()で子要素を配列として取得でき、ループでテキストを取り出すことができます。

属性取得とXML生成

要素に属性が付与されている場合は、getAttribute()メソッドで取得できます。以下は属性を取得し、新しいXMLを生成する例です。

var xmlString = '<book id="123"><title>GAS入門</title></book>';
var doc = XmlService.parse(xmlString);
var book = doc.getRootElement();
var idAttr = book.getAttribute('id');
Logger.log(idAttr.getValue()); // 123

// 新しいXMLを生成
var newBook = XmlService.createElement('book');
newBook.setAttribute('id', '456');
var title = XmlService.createElement('title').setText('Apps ScriptでXMLを扱う');
newBook.addContent(title);
var newDoc = XmlService.createDocument(newBook);
Logger.log(XmlService.getPrettyFormat().format(newDoc));

属性取得はgetAttribute()で行い、getValue()で値を取得します。XML生成はcreateElement()setAttribute()addContent()を組み合わせて行います。

RSSリーダー実装例

RSSフィードはXML形式で配信されるため、GASでRSSリーダーを作る際にXML解析が不可欠です。以下はRSSフィードを取得し、タイトルとリンクを抽出するサンプルです。

function fetchRSS() {
  var url = 'https://example.com/feed.xml';
  var response = UrlFetchApp.fetch(url);
  var xml = response.getContentText();
  var doc = XmlService.parse(xml);
  var channel = doc.getRootElement().getChild('channel');
  var items = channel.getChildren('item');
  items.forEach(function(item) {
    var title = item.getChildText('title');
    var link = item.getChildText('link');
    Logger.log(title + ' - ' + link);
  });
}

このスクリプトは、UrlFetchApp.fetch()でフィードを取得し、XmlService.parse()でパースします。getChildText()を使うと子要素のテキストを簡単に取得できます。RSSリーダーの基本的な構造はこのようにXML解析と要素取得で構成されます。

まとめ

GAS実践においてXML操作は頻繁に登場します。XmlServiceを使えば、parseでXML文字列をパースし、要素取得・属性取得・XML生成といった一連の処理を簡潔に書くことができます。RSSリーダーのような実用的なアプリケーションでは、フィード取得とXML解析が鍵となります。今回紹介したサンプルコードをベースに、独自のXML処理ロジックを構築してみてください。

この記事はAIによって作成されました。

コメント