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

如何在Google App Script中将HTML字符串转换为无标签纯文本

原脚本存在的问题
  • 依赖XmlService.parse()的严格XML校验,无法兼容普通HTML。该方法要求输入内容是完全符合XML规范的标记,遇到未闭合标签(如<img>、<input>)、标签大小写不匹配、属性值包含特殊字符的场景都会直接解析失败,而日常使用的HTML大多不满足严格XML要求。
  • 对<br>的处理逻辑错误。原脚本直接将<br>替换为空,会导致原本用换行分隔的内容直接拼接在一起,丢失原本的排版逻辑。
  • 解析逻辑冗余且易出错。使用XmlService.getPrettyFormat()格式化后再用正则移除标签,不仅会引入不必要的空白字符,正则/<[^>]*>/本身存在缺陷,遇到属性值包含>的标签(如<div title="1>2">)会出现匹配错误,导致内容被截断。
  • 没有处理HTML转义字符。原脚本无法识别&nbsp;、&lt;、&amp;这类HTML转义实体,会原样输出转义编码,不符合纯文本的展示要求。
修正后的可用脚本
function toStringFromHtml(html) {
  // 使用HtmlService容错解析HTML,无需符合严格XML规范
  const htmlOutput = HtmlService.createHtmlOutput(html);
  return htmlOutput.getContent()
    // 提前将换行、块级闭合标签替换为换行符,保留原排版逻辑
    .replace(/<br[^>]*>/gi, '\n')
    .replace(/<\/(p|div|li|h[1-6])[^>]*>/gi, '\n')
    // 移除所有剩余HTML标签
    .replace(/<[^>]*>/g, '')
    // 补充处理剩余转义空格
    .replace(/&nbsp;/g, ' ')
    // 合并多余空行、去除首尾空白
    .replace(/\n\s*\n/g, '\n')
    .trim();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:03