ossanfmのRSS feedを取得するコード
const ns_itunes = XmlService.getNamespace("itunes","http://www.itunes.com/dtds/podcast-1.0.dtd");
const response = UrlFetchApp.fetch('https://ossan.fm/feed.xml');
const xml = XmlService.parse(response.getContentText());
const root = xml.getRootElement();
const channel = root.getChild('channel');
const podcastName = channel.getChild('title').getText();
channel.getChildren('item').forEach((item,i) => {
let title = item.getChild("title").getText();
let link = item.getChild("link").getText();
let enclosure = item.getChild("enclosure").getAttribute("url").getValue();
let duration = item.getChild("duration",ns_itunes).getText();
let date = Utilities.formatDate(new Date(item.getChild("pubDate").getText()), 'Asia/Tokyo', 'yyyy/MM/dd');
console.log(title,link,date,enclosure,duration);
})
メモ
- 外部のRSSを取得
- UrlFetchApp.fetch(url)を利用する
- XMLをparse
- XmlService.parse(text)を利用する
- タグの値を取得
- Element.getChild(tagname).getText() を利用する
- 属性値を取得
- getAttribute(attributeName)を利用する
- 特殊な名前空間のタグを取得
- XmlService.getNamespace(prefix, uri) / Element.getChild(tagname, namespace) を利用
- itunes:durationの場合
- prefixにitunesを指定、getChildのtagnameにはdurationを指定