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

使用Google Apps Script将API获取的富文本格式化写入谷歌表格

解决方案:将Draft.js格式富文本写入Google表格

你可以通过Google Apps Script的RichTextValueBuilder类,把接口返回的Draft.js格式富文本转换为Google表格支持的富文本格式,具体实现步骤如下:

核心思路

  1. 解析接口返回的JSON数据,提取完整文本和所有样式范围;
  2. 利用RichTextValueBuilder逐个应用样式(加粗、斜体、下划线等);
  3. 将构建好的富文本写入目标单元格。

完整代码示例

function writeRichTextToSheet() {
  // 从接口获取的富文本JSON数据
  const richTextJson = '{"blocks":[{"key":"dgn8a","text":"This Text is rich.","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":4,"style":"ITALIC"},{"offset":13,"length":4,"style":"ITALIC"},{"offset":0,"length":4,"style":"BOLD"},{"offset":5,"length":4,"style":"UNDERLINE"}],"entityRanges":[],"data":{}}],"entityMap":{}}';
  
  // 解析JSON结构
  const parsedData = JSON.parse(richTextJson);
  const textBlock = parsedData.blocks[0]; // 示例仅包含一个文本块,多块需循环处理
  const fullText = textBlock.text;
  const styleRanges = textBlock.inlineStyleRanges;

  // 指定目标表格和单元格(此处为当前活跃表格的A1单元格)
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const targetCell = targetSheet.getRange("A1");

  // 初始化富文本构建器
  const richTextBuilder = SpreadsheetApp.newRichTextValue().setText(fullText);

  // 遍历所有样式规则,应用对应格式
  styleRanges.forEach(range => {
    const startPos = range.offset;
    const endPos = range.offset + range.length - 1; // Google Sheets富文本为闭区间,需减1
    const styleType = range.style;

    switch(styleType) {
      case "BOLD":
        richTextBuilder.setFontWeight(startPos, endPos, SpreadsheetApp.FontWeight.BOLD);
        break;
      case "ITALIC":
        richTextBuilder.setFontStyle(startPos, endPos, SpreadsheetApp.FontStyle.ITALIC);
        break;
      case "UNDERLINE":
        richTextBuilder.setUnderline(startPos, endPos, true);
        break;
      // 可扩展支持其他样式,比如STRIKETHROUGH(删除线)等
    }
  });

  // 构建富文本并写入单元格
  const finalRichText = richTextBuilder.build();
  targetCell.setRichTextValue(finalRichText);
}

关键说明

  • 多文本块处理:如果接口返回的blocks数组包含多个文本块,可通过循环遍历blocks,将每个块的文本拼接后统一处理,或逐个写入不同单元格;
  • 样式叠加:同一个文本范围若同时存在多种样式(如示例中开头4个字符同时加粗+斜体),代码会自动叠加应用所有样式;
  • 闭区间注意:Google Sheets的富文本格式方法使用闭区间(即start到end都包含在内),因此需要将offset + length的结果减1,确保样式应用范围准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:03:27