Google Sheets在同一调用中的不同字体大小

问题描述 投票:2回答:1

我正在研究一个脚本,在Google Sheets中自定义建立一个报告。我有一个由一系列单元格合并而成的标题,我需要在合并范围内将一些文本设置为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);
font-size
1个回答
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() 一遍又一遍。


以后的读者注意了。我发现这个答案是用新的工具来记录宏。RecordMacroMenu

© www.soinside.com 2019 - 2024. All rights reserved.