使用Google Apps Script将API获取的富文本格式化写入谷歌表格
解决方案:将Draft.js格式富文本写入Google表格
你可以通过Google Apps Script的RichTextValueBuilder类,把接口返回的Draft.js格式富文本转换为Google表格支持的富文本格式,具体实现步骤如下:
核心思路
- 解析接口返回的JSON数据,提取完整文本和所有样式范围;
- 利用
RichTextValueBuilder逐个应用样式(加粗、斜体、下划线等); - 将构建好的富文本写入目标单元格。
完整代码示例
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
相关产品推荐
相关产品推荐

