用Google Apps Script做了个简易的RSS阅读器

标签:Google, JavaScript, RSS

前几天Google Apps Script突然向标准版的用户开放了,所以我这种免费用户也可以玩了。

看了下文档后,就用现有的服务做了个简易的RSS阅读器:


想自己做个脚本来玩的话,需要拥有一个Google Apps账号。有域名的话可以直接去申请(.cn域名不行),没有域名的话可以在本站注册一个Google Apps账号。

有了账号后,就可以登录Google Apps,新建或打开一个电子表格(需要翻墙),选择“工具 — 脚本 — 编辑脚本”。
此时就会打开一个对话框,把你要执行的任务写成一个JavaScript函数,并保存起来。
然后选择一个函数,点运行按钮就能看到效果了。

其中有个特别的onOpen函数,每次打开这个电子表格时,这个函数就会被自动执行。
服务里还有个添加菜单的功能,可以把你的脚本添加到菜单里去。

最后把我的RSS阅读器源码放出来:
function setHeader(st) {
  st.getRange(1, 1, 1, 3)
    .setValues([['标题', '链接', '日期']])
    .setFontWeight("bold")
    .setHorizontalAlignment("center");
}

function setContent(st, content) {
  st.getRange(2, 1, content.length, 3)
    .setValues(content)
    .setVerticalAlignment("middle");
}

function fetch(url) {
  var response = UrlFetchApp.fetch(url);
  var xml = Xml.parse(response.getContentText()).getElement();
  return xml.getElement('channel').getElements('item');
}

function rss() {
  var st = SpreadsheetApp.getActiveSheet();
  st.clear();
  setHeader(st);

  var items = fetch("https://twitter.com/statuses/user_timeline/20765944.rss");

  var content = [];
  for (var i = items.length - 1; i >= 0; --i) {
    var item = items[i];
    content.push([
      item.getElement('title').getText(),
      item.getElement('link').getText(),
      new Date(item.getElement('pubDate').getText()).toLocaleString()
    ]);
  }

  setContent(st, content);
}

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "rtmeme", functionName: "rss"} ];
  ss.addMenu("我的脚本", menuEntries);
  rss();
}
要注意的有2点:
  • 解析XML文档时,getElements拿到的元素数组不能用for...in来遍历;
  • UrlFetchApp.fetch拿到的文本必须是UTF-8编码,否则就会变成乱码。

0条评论 你不来一发么↓

    想说点什么呢?