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

如何在Google Sheets中合并单元格内容时保留富格式?

用Google Apps Script保留格式合并单元格

当然可以实现!普通的JOIN函数只能处理纯文本,要保留超链接、加粗这类富格式,得用Google Apps Script写自定义函数来搞定。

自定义格式化合并函数

下面这个函数可以像JOIN一样使用,但会完整保留每个单元格的富文本格式:

function JOIN_FORMATTED(delimiter, ...cellReferences) {
  // 初始化最终的富文本对象
  let resultRichText = SpreadsheetApp.newRichTextValue();
  let isFirst = true;

  cellReferences.forEach(cellRef => {
    // 处理单个单元格或单元格区域
    const range = SpreadsheetApp.getActiveSheet().getRange(cellRef);
    const richText = range.getRichTextValue();
    
    if (!richText.getText()) return; // 跳过空单元格

    // 非第一个单元格前加分隔符
    if (!isFirst) {
      resultRichText.appendText(delimiter);
    } else {
      isFirst = false;
    }

    // 逐个复制原单元格的文本段和对应格式
    const runs = richText.getRuns();
    runs.forEach(run => {
      resultRichText.appendText(run.getText())
        .setLinkUrl(run.getLinkUrl())
        .setBold(run.isBold())
        .setItalic(run.isItalic())
        .setUnderline(run.isUnderline());
      // 如需支持更多格式(比如颜色),可以继续添加对应方法
    });
  });

  // 将结果写入当前单元格
  const activeCell = SpreadsheetApp.getActiveRange();
  activeCell.setRichTextValue(resultRichText.build());
}

使用方法

  1. 打开你的Google Sheets,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,粘贴上面的代码并保存项目。
  2. 返回表格,在需要生成合并结果的单元格中输入:
    =JOIN_FORMATTED(" | ", Recents!D1, Recents!B1)
    
    按回车后,单元格就会显示带格式的合并内容了。

额外说明

  • 第一次运行函数时会要求授权,按照提示完成权限验证即可。
  • 如果需要在表单提交后自动生成格式化摘要,可以结合onFormSubmit触发器:在Apps Script编辑器中添加一个触发函数,监听表单提交事件,自动调用上述逻辑处理新提交的行。
  • 代码里默认支持了超链接、加粗、斜体、下划线,如果你需要更多格式(比如字体颜色、字号),可以在forEach(run => {...})块里添加对应的setForegroundColor()、setFontSize()等方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:43:11