ブログやニュースサイトなどの更新情報を取得する際、RSS を読み込むことが多い。RSS を利用すれば簡単に更新情報を取得することができる。もちろん Google Apps Script でも利用できる。
Google Apps Script で RSS を読み込む方法
GAS では XMLService を利用することで RSS を読み込むことができる。例えば WordPress の RSS を読み込む場合には以下のように記述する。
let url = 'https://loumo.jp/feed'
let response = UrlFetchApp.fetch(url);
let content = response.getContentText("utf-8");
const document = XmlService.parse(content);
const root = document.getRootElement();
const channel = root.getChild('channel');
const items = channel.getChildren('item');
for (item of items) {
console.log(item.getChild('title').getText())
console.log(item.getChild('link').getText())
}
実行すると記事の URL とタイトルをログに出力する。このように XmlService.parse に RSS の 文字列を渡すと XML として読み込んでくれる。
取得した RSS データをスプレッドシートに保存する場合は以下のように SpreadsheetApp で対象のシートを取得し、setValue で値を書き込む。
const targetSheetName = 'sheet1'
let url = 'https://loumo.jp/feed'
let response = UrlFetchApp.fetch(url);
let content = response.getContentText("utf-8");
const document = XmlService.parse(content);
const root = document.getRootElement();
const channel = root.getChild('channel');
const items = channel.getChildren('item');
// insert data into spreadsheet
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
const sheet = spreadsheet.getSheetByName(targetSheetName)
row = 1;
for (item of items) {
sheet.getRange(`A${row}`).setValue(item.getChild('title').getText())
sheet.getRange(`B${row}`).setValue(item.getChild('link').getText())
row += 1
}
これで対象のシートに RSS の内容が保存される。