Google Sheets Apps Script:如何为拼接字符串设置部分内容加粗格式?
实现Google表格单元格内部分内容加粗拼接
需求:将A1(Tom)、B1(White)、C1(1/1/2000)的内容拼接至D1,仅姓名(Tom White)部分加粗,最终效果为Tom White, born 1/1/2000。
你之前尝试的代码失效原因很直接:getValue()返回的是普通字符串/数值,根本没有setBold()方法,自然无法生效。要给单元格内的部分文本设置格式,得用Google Apps Script的RichTextValueBuilder来构建富文本。
以下是可行的代码:
function exampleFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Sheet1"); // 获取单元格值 var name = sheet.getRange('A1').getValue(); var surname = sheet.getRange('B1').getValue(); var dateOfBirth = sheet.getRange('C1').getValue(); // 创建加粗文本样式 var boldStyle = SpreadsheetApp.newTextStyle() .setBold(true) .build(); // 拼接完整文本并构建富文本 var fullName = name + ' ' + surname; var fullText = fullName + ', born ' + dateOfBirth; var richText = SpreadsheetApp.newRichTextValue() .setText(fullText) // 给姓名部分设置加粗(从起始位置0到姓名总长度) .setTextStyle(0, fullName.length, boldStyle) .build(); // 将富文本写入D1单元格 sheet.getRange('D1').setRichTextValue(richText); }
关键说明:
- 先通过
newTextStyle()创建加粗样式,再用newRichTextValue()构建包含完整内容的富文本对象; - 用
setTextStyle(start, end, style)指定需要格式化的文本范围,这里直接用姓名的总长度作为结束位置,适配不同长度的姓名; - 最后必须用
setRichTextValue()写入单元格,普通的setValue()只能处理纯文本,不支持部分格式。
内容的提问来源于stack exchange,提问作者Anfrea
相关产品推荐
相关产品推荐

