読者です 読者をやめる 読者になる 読者になる

GoogleAppsScript で RSS を扱うメモ

こちらのサイトにて公開されていたものを改良して試行錯誤中。同一シート内に複数のフィード URL を書いておいて一括で表示させたい。とりあえずコピペして同じ処理を繰り返すようにした。

function getRss() {
  var ss = SpreadsheetApp.getActiveSheet();
  var rssUrl = ss.getRange("A3").getValue();
  arguments.callee
    
  var advancedArgs = {
    headers: {"User-Agent":"UrlFetchApp(id="+Utilities.base64Encode(Utilities.computeHmacSha256Signature(Session.getUser().getUserLoginId(),ss.getName()))+")"}
  };
  var rssText = UrlFetchApp.fetch(rssUrl,advancedArgs).getContentText();
  var doc = Xml.parse(rssText);
  
  var items = doc.getElement().getElement("channel").getElements("item");
  var titles = new Array();
  var item;
  for( idx in items ){
    entryDate = items[idx].getElement("pubDate").getText();
    entryTitle = items[idx].getElement("title").getText();
    titles.push( [entryDate, entryTitle] ); 
  }
  var range = ss.getRange(5,1,titles.length,2); //getRange()の引数は(最初の行,最初の列,行数,列数)
  range.setValues(titles);

  /////////////////////////////////////////////////////////////////

  var rssUrl = ss.getRange("C3").getValue();
  arguments.callee
    
  var advancedArgs = {
    headers: {"User-Agent":"UrlFetchApp(id="+Utilities.base64Encode(Utilities.computeHmacSha256Signature(Session.getUser().getUserLoginId(),ss.getName()))+")"}
  };
  var rssText = UrlFetchApp.fetch(rssUrl,advancedArgs).getContentText();
  var doc = Xml.parse(rssText);
  
  var items = doc.getElement().getElement("channel").getElements("item");
  var titles = new Array();
  var item;
  for( idx in items ){
    entryDate = items[idx].getElement("pubDate").getText();
    entryTitle = items[idx].getElement("title").getText();
    titles.push( [entryDate, entryTitle] ); 
  }
  var range = ss.getRange(5,3,titles.length,2); //getRange()の引数は(最初の行,最初の列,行数,列数)
  range.setValues(titles);
  
}

あとで調べる予定。