Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script .newRichTextValue()当前不工作_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script .newRichTextValue()当前不工作

Google apps script .newRichTextValue()当前不工作,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一张谷歌表格,上面列出了人们做过的采访。我想有一个具体的表格,用来根据一个人的身份证把他拉上来,并弹出所有的面试。人们可以有多个采访,所以我建立了一个功能,可以查看每个条目并返回与他们的ID对应的所有采访。现在它可以工作,但很难阅读。我只想大胆地回答问题 我尝试了几种不同的方法。两年前,我偶然发现了一个类似的问题,但从那时起,谷歌推出了一种方法,使用名为newRichTextValue的谷歌脚本,只对特定范围的文本进行加粗。然而,我不能让它工作。它显示以下消息:com.google.apps

我有一张谷歌表格,上面列出了人们做过的采访。我想有一个具体的表格,用来根据一个人的身份证把他拉上来,并弹出所有的面试。人们可以有多个采访,所以我建立了一个功能,可以查看每个条目并返回与他们的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日

问题

他们对问题的回答

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仅在手动进行编辑(而不是通过公式或脚本)时才会触发。见限制: