如何在Google Apps Script中解析Feed中每个条目的标题?
解决RSS解析中「Cannot read property 'getText' of null」的问题
错误原因
你解析的是Atom格式的Feed,<title>元素属于你定义的Atom命名空间(http://www.w3.org/2005/Atom),但调用item.getChild('title')时没有传入对应的命名空间参数,导致方法找不到元素返回null,后续调用getText()就触发了报错。
修复后的代码
function parseFeed() { var feed = UrlFetchApp.fetch("https://www.reddit.com/r/GoogleAppsScript.rss?limit=1000").getContentText(); feed = XmlService.parse(feed); var namespace = XmlService.getNamespace("http://www.w3.org/2005/Atom"); var items = feed.getRootElement().getChildren("entry", namespace); items.forEach(item => { // 调用getChild时传入命名空间,确保找到正确的title元素 var titleElement = item.getChild('title', namespace); if (titleElement) { // 额外增加空值判断,避免意外报错 var title = titleElement.getText(); Logger.log(title); } else { Logger.log("当前条目无title元素"); } }); }
调试技巧
- 打印条目结构:如果不确定元素位置,可在循环中加入
Logger.log(item.toString()),查看当前条目的所有子元素信息,确认目标元素的名称和命名空间。 - 批量检查元素:用
item.getChildren(namespace)获取当前条目下所有带目标命名空间的子元素,遍历打印它们的标签名,快速定位元素是否存在。
内容的提问来源于stack exchange,提问作者hagu81
相关产品推荐
相关产品推荐

