根据套装更改文本颜色
Change color of text based on suits
有人帮我实现了这个功能,所以现在我想根据 for 循环和 green
、blue
、black
、翻牌花色进行更改,如果卡片是梅花 = 绿色等,任何帮助 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);
}
}
参考
有人帮我实现了这个功能,所以现在我想根据 for 循环和 green
、blue
、black
、翻牌花色进行更改,如果卡片是梅花 = 绿色等,任何帮助 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);
}
}
参考