You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets脚本解析RSS报错:实体"Wheel-TW"未以分号结尾

问题分析

报错提示Exception: Error on line 134: The reference to entity "Wheel-TW" must end with the ';' delimiter.,核心原因是你抓取的RSS feed(https://agremia.com/feed)生成的XML内容不符合规范——里面存在未正确转义的&符号(比如出现&Wheel-TW这类格式)。而Google Apps Script的XmlService.parse对XML格式校验严格,要求所有&必须转义为&(除非是&、<这类合法实体),因此触发解析失败。

解决方案

在解析XML之前,先对获取到的文本做预处理,把所有未转义的&替换成合法的&,修改后的完整脚本如下:

function getURLData() {
  var currentData = [];
  var urltoCheck = [
    "https://agremia.com/feed",
  ];
  for (var i = 0; i < urltoCheck.length; i++){
    var ficiencaData = UrlFetchApp.fetch(urltoCheck[i]);
    var xml = ficiencaData.getContentText();
    // 新增:处理未转义的&符号,规避XML解析报错
    xml = xml.replace(/&(?!amp;|lt;|gt;|quot;|apos;)/g, '&amp;');
    let response = XmlService.parse(xml);
    var root = response.getRootElement();
    let channel = root.getChild('channel');
    let items = channel.getChildren('item');
    items.forEach(item => {
      let title = item.getChild('title').getText();
      let pubDateb = item.getChild('pubDate').getText();
      let link = item.getChild('link').getText();
      currentData.push([title,pubDateb,link,urltoCheck[i]]);
    });
  }
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Combinado Medios");
  var currentDataRange = sheet.getRange(sheet.getLastRow() + 1, 1, currentData.length, currentData[0].length);
  currentDataRange.setValues(currentData); 
}
补充说明
  • 正则表达式&(?!amp;|lt;|gt;|quot;|apos;)会精准匹配所有不是合法XML实体开头的&符号,确保只替换未转义的部分,不会破坏已经正确转义的内容。
  • 这个问题并非你的脚本逻辑错误,是目标网站的RSS生成不规范导致的,通过文本预处理即可解决解析报错问题。

内容的提问来源于stack exchange,提问作者djur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:52:45