我有一个Google表单,其中列出了人们所做的采访。我想要一个特定的表格,用于通过其ID来拉某人并弹出他们的所有访谈。人们可以进行多次采访,因此我建立了一个功能,可以查看每个条目并返回与他们的ID相对应的所有采访。现在它可以工作,但是很难阅读。我只想将问题加粗。
我尝试了几种不同的方法。我偶然发现了两年前问过的类似问题,但是从那时起,谷歌就提出了一种使用称为newRichTextValue()的谷歌脚本仅对某些文本范围加粗的方法。但是我不能使它工作。它显示以下消息:com.google.apps.maestro.server.beans.trix.impl.RichTextValueApiAdapter@57995aa而不是我想要的。我仔细研究了一下,如果您尝试在Gmail中使用RichTextValue,则可能会发生这种情况,因为它需要HTML。
function interview(alpha) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var interview = ss.getSheetByName("2020 Interview");
var data = interview.getDataRange().getValues();
var intvw = "";
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var space = "\n\n";
var difspace = "\n";
var newtext;
var month = ["JAN", "FEB", "MAR", "APR", "MAY", 'JUN', "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
for (var i = 1; i < data.length; i++) {
if (data[i][0] == alpha){
intvw = intvw + data[i][4] + " | " + data[i][1].getDate() + " " + month[data[i][1].getMonth()] + " " + data[i][1].getYear();
intvw = intvw + space;
newtext = data[0][5];
newtext = SpreadsheetApp.newRichTextValue()
.setText(newtext)
.setTextStyle(bold)
.build();
intvw = intvw + newtext + difspace;
intvw = intvw + data[i][5] + space;
}
}
return intvw;
}
当前输出为:
名称| 2019年5月1日
com.google.apps.maestro.server.beans.trix.impl.RichTextValueApiAdapter@579955aa
他们对问题的回答
应该是:
名称| 2019年5月1日
问题
他们对问题的回答
答案 0 :(得分:1)
newRichTextValue().build();
不太适合您使用的方式它不会返回可附加到其他字符串(intvw = intvw + newtext + difspace;...
)的字符串,而是返回RichTextValue
类的实例,该实例只能用作已确定方法的参数。例如。您可以使用它来将格式化的文本分配给一个范围。
如果您的目标是将F列的某些单元格输入一个单元格,而单元格“ F1”应为粗体,其余单元格未格式化,则可以通过首先分配合并内容来实现data[0][5]
到intvw
到一个单元格中,然后将newRichTextValue().build();
应用于intvw
。
在此,方法setTextStyle(startOffset, endOffset, textStyle)仅允许您将文本样式应用于data[0][5]
-只要知道此子字符串在整个字符串中的位置。
如果data[0][5]
是字符串的开头,则可以仅通过data[0][5].length
获得endOffset。
这是您的代码的修改版本,可以正常工作:
function interview(alpha) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var interview = ss.getSheetByName("2020 Interview");
var data = interview.getDataRange().getValues();
var intvw = "";
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var space = "\n\n";
var difspace = "\n";
var newtext = data[0][5];
var endIndex=newtext.length;
var month = ["JAN", "FEB", "MAR", "APR", "MAY", 'JUN', "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
intvw = intvw + newtext + difspace;
for (var i = 1; i < data.length; i++) {
if (data[i][0] == alpha){
intvw = intvw + data[i][4] + " | " + data[i][1].getDate() + " " + month[data[i][1].getMonth()] + " " + data[i][1].getYear();
intvw = intvw + space;
intvw = intvw + data[i][5] + space;
}
}
var newRichText = SpreadsheetApp.newRichTextValue()
.setText(intvw)
.setTextStyle(0,endIndex,bold)
.build();
//replace "A10" through the cell of your choice
interview.getRange("A10").setRichTextValue(newRichText);
}
如果您希望将data[0][5]
插入与字符串开头不同的位置,或者希望在单元格中插入几个粗体文本范围,则必须找到相应的startOffset
和endOffset
和Regex表达式。