Google Sheet,两个字体大小一个单元格 [英] Google Sheets, Two Font Sizes One Cell

查看:0
本文介绍了Google Sheet,两个字体大小一个单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含数百行数据的电子表格,这些数据来自数据验证列表。

有些数据高度相关,因此我希望它大一些,有些数据很有用,但对大多数人来说是多余的。

不同的字体大小也可以。如果有人是这方面的专家,不同的颜色和格式将是令人惊叹的

我需要脚本是动态的,即|左边的数据以一种方式格式化,而|右边的数据以另一种方式格式化。

推荐答案

我相信您的目标如下。

  • 您希望使用Google Apps脚本(来自您的标记google-sheets-macros)修改单元格中文本部分的文本样式。
  • 您要修改NAME NAME | CODECODE
    • 您不想修改NAME NAME+ +|+ 的文本样式。
    • 您只想修改CODE的文本样式。
    • Different font size is fine. If anyone is an expert with though, different colours and format would be amazing中,您希望修改文本的字体大小和前景颜色。在这种情况下,format您期望的是粗体和斜体吗?
  • 是否要保留NAME NAME | CODENAME NAME的文本样式。
我认为使用RichTextValue可以实现上述目标。在这个回答中,我想建议使用示例脚本。

示例情况:

此示例脚本假设NAME NAME | CODE的值放在&qot;A";列中。因此,为了测试它,请准备好这种情况。

示例脚本:

请将以下脚本复制粘贴到电子表格的容器绑定脚本中,并设置工作表名称。

function myFunction() {
  const sheetName = "Sheet1";  // Please set the sheet name.
  
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(sheetName);
  const range = sheet.getRange("A1:A" + sheet.getLastRow());
  const richTextValues = range.getRichTextValues().map(([a]) => {
    const text = a.getText();
    const pos = text.indexOf("|");
    if (pos > -1) {
      const temp = a.getTextStyle(0, pos - 1);
      const textStyle = SpreadsheetApp.newTextStyle()
        .setFontSize(5)
        .setForegroundColor("red")
        .setItalic(true)
        .setBold(true)
        .build();
      return [
        SpreadsheetApp.newRichTextValue()
        .setText(text)
        .setTextStyle(0, pos - 1, temp)
        .setTextStyle(pos + 2, text.length, textStyle)
        .build()
      ];
    }
    return [SpreadsheetApp.newRichTextValue().setText(text).setTextStyle(a.getTextStyle()).build()];
  });
  range.setRichTextValues(richTextValues);
}

结果:

当您运行上述脚本时,会重新格式化&A&Quot;列的文本样式,并修改CODE的文本样式,但不会修改NAME NAME | CODENAME NAME文本样式。并且不修改不带|的单元格的文本样式。您可以在下图中看到示例结果。

注意:

  • 此示例脚本是一个简单的示例。请根据您的实际情况进行修改。

引用:

添加:

当您想要转换所选范围时,下面的示例脚本如何?使用此脚本时,首先请选择范围并运行此脚本。通过此操作,将转换所选范围。

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const select = ss.getSelection();
  const sheet = select.getActiveSheet();
  const range = select.getActiveRange();
  const richTextValues = range.getRichTextValues().map(([a]) => {
    const text = a.getText();
    const pos = text.indexOf("|");
    if (pos > -1) {
      const temp = a.getTextStyle(0, pos - 1);
      const textStyle = SpreadsheetApp.newTextStyle()
        .setFontSize(5)
        .setForegroundColor("red")
        .setItalic(true)
        .setBold(true)
        .build();
      return [
        SpreadsheetApp.newRichTextValue()
        .setText(text)
        .setTextStyle(0, pos - 1, temp)
        .setTextStyle(pos + 2, text.length, textStyle)
        .build()
      ];
    }
    return [SpreadsheetApp.newRichTextValue().setText(text).setTextStyle(a.getTextStyle()).build()];
  });
  range.setRichTextValues(richTextValues);
}
  • 如果要将转换后的值放在列的右侧,请按如下所示修改上面的脚本。

    • 发件人

        range.setRichTextValues(richTextValues);
      
    •   range.offset(0, 1).setRichTextValues(richTextValues);
      

这篇关于Google Sheet,两个字体大小一个单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆