Google表示同一通话中的不同字体大小

时间:2018-05-12 16:18:24

标签: font-size

我正在编写一个脚本来自定义Google表格中的报告。我有一个由一系列单元格合并而成的标题,我需要将一些文本设置为24磅字体,一些文本设置为合并范围内的18点。我不知道如何开始这样做。到目前为止,这是我的代码。下一步是将'(频率范围从80M到1G)'设置为18磅字体。

function radImmunity() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
    sheet.insertSheet('Radiated Immunity');  //Create Rad Imm sheet
    var radImm = SpreadsheetApp.getActiveSheet();
      radImm.getRange('A1:J4').merge();
      radImm.getRange('A1:J4').setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP);
      radImm.getRange('A1').setValue('Radiated Immunity Test                                                             (Frequency Range from 80M to 1G)')
      radImm.getRange('A1').setHorizontalAlignment("center").setVerticalAlignment("top").setFontSize(24).setFontWeight("bold");
      radImm.getRange('A1:J4').setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);

1 个答案:

答案 0 :(得分:0)

您需要的代码段是:

radImm.getRange('A1:J4').setRichTextValue(SpreadsheetApp.newRichTextValue().setText('Radiated Immunity Test\n(Frequency Range from 80M to 1G)').setTextStyle(0, 23, SpreadsheetApp.newTextStyle().setFontSize(24).build()).setTextStyle(23, 55, SpreadsheetApp.newTextStyle().setFontSize(18).build()).build());

不过,我会将其分成几部分,所以看起来像这样:

var fontStyle24 = SpreadsheetApp.newTextStyle().setFontSize(24).setBold(true).build()
var fontStyle18 = SpreadsheetApp.newTextStyle().setFontSize(18).setBold(true).build()
var titleRichText = SpreadsheetApp.newRichTextValue()
.setText('Radiated Immunity Test\n(Frequency Range from 80M to 1G)')
.setTextStyle( 0, 23, fontStyle24)
.setTextStyle(23, 55, fontStyle18)
.build();

radImm.getRange('A1').setRichTextValue(titleRichText)

这里的键是setRichTextValue(),可让您选择要格式化的字符串。请注意,我还将换行符替换为多个空格。当然,您不必这样做,但是它比依靠自动换行更可靠。


但是,如果我要重构您的整个代码段,它将最终看起来像这样:

function radImmunity() {

  // Create the font styles we'll use later
  var fontStyle24 = SpreadsheetApp.newTextStyle().setFontSize(24).setBold(true).build()
  var fontStyle18 = SpreadsheetApp.newTextStyle().setFontSize(18).setBold(true).build()
  var titleRichText = SpreadsheetApp.newRichTextValue()
  .setText('Radiated Immunity Test\n(Frequency Range from 80M to 1G)')
  .setTextStyle( 0, 23, fontStyle24)
  .setTextStyle(23, 55, fontStyle18)
  .build();

  // Insert a new sheet  
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var radImm = sheet.insertSheet('Radiated Immunity');  //Create Rad Imm sheet

  // Add and format the title
  var titleRange = radImm.getRange('A1:J4')
  titleRange.merge();
  titleRange.setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP);
  titleRange.setHorizontalAlignment("center").setVerticalAlignment("top")
  titleRange.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
  titleRange.setRichTextValue(titleRichText)

}

我在这里唯一有意义的建议是不要一遍又一遍地打电话给getRange()


对未来读者的说明:我使用new(ish)工具记录宏发现了这个答案。
RecordMacroMenu