Google apps script .newRichTextValue()当前不工作
我有一张谷歌表格,上面列出了人们做过的采访。我想有一个具体的表格,用来根据一个人的身份证把他拉上来,并弹出所有的面试。人们可以有多个采访,所以我建立了一个功能,可以查看每个条目并返回与他们的ID对应的所有采访。现在它可以工作,但很难阅读。我只想大胆地回答问题 我尝试了几种不同的方法。两年前,我偶然发现了一个类似的问题,但从那时起,谷歌推出了一种方法,使用名为newRichTextValue的谷歌脚本,只对特定范围的文本进行加粗。然而,我不能让它工作。它显示以下消息:com.google.apps.maestro.server.beans.trix.impl。RichTextValueApiAdapter@57995aa而不是我想要的。我仔细研究了一下,如果你试图在Gmail中使用RichTextValue,这应该会发生,因为它需要HTMLGoogle apps script .newRichTextValue()当前不工作,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一张谷歌表格,上面列出了人们做过的采访。我想有一个具体的表格,用来根据一个人的身份证把他拉上来,并弹出所有的面试。人们可以有多个采访,所以我建立了一个功能,可以查看每个条目并返回与他们的ID对应的所有采访。现在它可以工作,但很难阅读。我只想大胆地回答问题 我尝试了几种不同的方法。两年前,我偶然发现了一个类似的问题,但从那时起,谷歌推出了一种方法,使用名为newRichTextValue的谷歌脚本,只对特定范围的文本进行加粗。然而,我不能让它工作。它显示以下消息:com.google.apps
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日
问题
他们对问题的回答newRichTextValue.build;不完全符合您希望的使用方式
它不会返回可以附加到其他字符串intvw=intvw+newtext+difspace;的字符串;。。。,而是RichTextValue类的一个实例,它只能用作已确定方法的参数。例如,您可以使用它将格式化文本分配给某个范围
如果您的目标是将F列的某些单元格输入到单元格中,其中单元格F1是应加粗的问题,而其余单元格未格式化,则可以通过首先将数据[0][5]的内容合并到intvwto单元格中,然后应用newRichTextValue.build来实现;到intvw
因此,该方法仅允许您将文本样式应用于数据[0][5]——前提是您知道该子字符串在整个字符串中的位置
如果数据[0][5]是字符串的开头,则只需通过数据[0][5].length即可获得内偏移
以下是您的代码的修改版本:
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);
}
如果您希望在字符串开头以外的位置插入数据[0][5],或者希望在单元格中插入多个粗体文本区域,则必须找到相应的startOffset和endoffsetwithregex表达式。因为您返回的是输出,我不确定您对输出做了什么。不过,我认为您需要使用,或者这是一个我可以输入到google sheets中的函数。因此,如果我将input=interviewalpha输入到一个单元格中,那么所问的每个问题和答案都将输入到该单元格中。它看起来像是.setRichTextValue通过设置选择的任何范围作为RichTextValue来工作。如果我将我的范围设置为活动单元格,然后跟踪问题和答案的长度,以确定要加粗的范围,那么我可能能够做到这一点。我将尝试一下,看看是否有效..setRichTextValue不起作用,因为自定义函数只允许返回。我没有使用.setRichTextValue的权限。请查看示例电子表格。另一方面,我们无法复制输出。这很有效,谢谢!我不认为我可以在GoogleSheets的自定义函数中使用newRichTextValue,但我只会在编辑工作表时触发运行该函数。是的,这是一个很好的解决方案。请注意,onEdit仅在手动进行编辑(而不是通过公式或脚本)时才会触发。见限制: