Google Apps Script调用setRichTextValues设置混合格式富文本报错
报错原因
调用方法与传参不匹配:
setRichTextValues()面向多单元格范围设计,要求传入二维数组格式的富文本值集合,规则与setValues()一致- 当前操作的
sheet.getRange(1,3)为单个单元格,需调用无末尾s的setRichTextValue()方法,直接传入单个RichTextValue对象即可。
修正代码
只需修改最后一行赋值逻辑即可,完整可运行代码如下:
function formatCombi() { // 获取当前表格和工作表 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); // 获取两个单元格的纯文本值,拼接为合并文本 var text1 = sheet.getRange(1,1).getValue(); var text2 = sheet.getRange(1,2).getValue(); var text3 = text1 + text2; var range = sheet.getRange(1,3); // 获取两个单元格的富文本对象 var rtf1 = sheet.getRange(1,1).getRichTextValue(); var rtf2 = sheet.getRange(1,2).getRichTextValue(); // 计算两个文本和合并后文本的长度 var length1 = text1.length; var length2 = text2.length; var length3 = length1 + length2; // 提取两个文本的格式属性 var bold1 = rtf1.getTextStyle().isBold(); var bold2 = rtf2.getTextStyle().isBold(); var italic1 = rtf1.getTextStyle().isItalic(); var italic2 = rtf2.getTextStyle().isItalic(); var under1 = rtf1.getTextStyle().isUnderline(); var under2 = rtf2.getTextStyle().isUnderline(); var strike1 = rtf1.getTextStyle().isStrikethrough(); var strike2 = rtf2.getTextStyle().isStrikethrough(); var colour1 = rtf1.getTextStyle().getForegroundColor(); var colour2 = rtf2.getTextStyle().getForegroundColor(); // 为两段文本分别构建文本样式对象 const style1 = SpreadsheetApp.newTextStyle() .setUnderline(under1) .setBold(bold1) .setItalic(italic1) .setForegroundColor(colour1) .build(); const style2 = SpreadsheetApp.newTextStyle() .setUnderline(under2) .setBold(bold2) .setItalic(italic2) .setForegroundColor(colour2) .build(); // 构建合并后的富文本对象,分别应用两段的样式 var rtf3 = SpreadsheetApp.newRichTextValue() .setText(text3) .setTextStyle(0,length1,style1) .setTextStyle(length1,length3,style2) .build(); // 修正:单个单元格使用setRichTextValue而非setRichTextValues range.setRichTextValue(rtf3); }
你原本的富文本构建逻辑完全正确,RichTextBuilder的多格式设置能力可正常生效,仅为赋值方法调用错误导致的报错。
内容的提问来源于stack exchange,提问作者Digby Mason
相关产品推荐
相关产品推荐

