根据套装更改文本颜色

Change color of text based on suits

有人帮我实现了这个功能,所以现在我想根据 for 循环和 greenblueblack、翻牌花色进行更改,如果卡片是梅花 = 绿色等,任何帮助 TY

示例

function changeColor(cel, flop) {

  const spreadsheet = SpreadsheetApp.getActive();
  const sheet = spreadsheet.getSheetByName("Sheet1");
  const range = sheet.getRange(cel);
  
  const black = SpreadsheetApp.newTextStyle()
    .setForegroundColor("black")
    .build();

  const blue = SpreadsheetApp.newTextStyle()
    .setForegroundColor("blue")
    .build();

  const green = SpreadsheetApp.newTextStyle()
    .setForegroundColor("green")
    .build();

  const richText = SpreadsheetApp.newRichTextValue()
  .setText(flop)
  .setTextStyle(0, 2, black)
  .setTextStyle(3, 5, blue)
  .setTextStyle(6, 8, green)
  .build();

  range.setRichTextValue(richText); 
}

数据库上的第一个 ss sheet 查询后报告选项卡上的第二个

描述

假设一个单元格包含代表三张卡片的文本。每张卡片由 space 分隔。根据花色 ♠ (黑), ♥ (红), ♦ (蓝), ♣ (绿)改变牌色。

在我的示例中,我可以使用 Range.setRichTextValues(),因为单元格是连续的,但我选择不使用,因为我不知道 OP 的预期用途。

脚本

function flop() {
  try {
    let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    let values = sheet.getDataRange().getValues();
    for( let i=0; i<values.length; i++ ) {
      let cell = 'B'+(i+1).toString();
      changeColor(cell,values[i][0]);
    }
  }
  catch(err) {
    console.log(err);
  }
}

function changeColor(cell,flop) {
  try {
    const spreadsheet = SpreadsheetApp.getActive();
    const sheet = spreadsheet.getSheetByName("Sheet1");
    let cards = flop.split(' ');
    const black = SpreadsheetApp.newTextStyle()
      .setForegroundColor("black")
      .build();

    const red = SpreadsheetApp.newTextStyle()
      .setForegroundColor("red")
      .build();

    const blue = SpreadsheetApp.newTextStyle()
      .setForegroundColor("blue")
      .build();

    const green = SpreadsheetApp.newTextStyle()
      .setForegroundColor("green")
      .build();

    let colors = [];
    let range = [];
    let j = 0;
    for( let i=0; i<cards.length; i++ ) {
      let card = cards[i];
      let suit = card.charAt(card.length-1);
      switch(suit) {
        case '♠':
          colors.push(black);
          break
        case '♥':
          colors.push(red);
          break
        case '♦':
          colors.push(blue);
          break
        case '♣':
          colors.push(green);
          break
      }
      range.push([j,j+card.length]);
      j = j+card.length+1;
    }

    let richText = SpreadsheetApp.newRichTextValue();
    richText = richText.setText(flop);
    range.forEach( (card,i) => { richText = richText.setTextStyle(card[0],card[1],colors[i]); } );
    richText = richText.build();

    sheet.getRange(cell).setRichTextValue(richText);
  }
  catch(err) {
    console.log(err);
  }
}

参考