根据颜色将编号写入相邻单元格



使用此脚本,该脚本为除默认单元格外的所有颜色单元格按顺序写入颜色编号。

我想写默认颜色的值,这样我以后可以排序。

但它不应该为那个些空行写入值,但它也在为空行写入值。

任何帮助都将不胜感激。

function numberColors4() {

var colorCol = 1,     
numberCol = 11,    
firstDataRow = 2, 
palette = [
"#ffffff",  // Default 1
"#ff9900",  // Orange 2
"#00b0f0", // Light Blue 3
"#ffff00", // yellow 4 
"#93c47d", // Green 5
"#00ff00", // Light Green 6
"#9900ff", // Purple 7
"#ff0000", // Red 8
"#5f5f5f" // Grey 9     
];
var numbers = [],
activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1')
dataNumRows = activeSheet.getMaxRows()-(firstDataRow-1),
colorColColors = activeSheet.getRange(2, colorCol, dataNumRows, 1).getBackgrounds();
for (var rowIndex in colorColColors) {
numbers[rowIndex] = [];
var rowColor = colorColColors[rowIndex].toString(),
colorIndex = palette.indexOf(rowColor);
if (colorIndex == -1) {
numbers[rowIndex].push(rowColor); 
} else if (colorIndex == 0) {
numbers[rowIndex].push(""); 
} else {
numbers[rowIndex].push(colorIndex);
}
}
activeSheet.getRange(2, numberCol, dataNumRows, 1).setValues(numbers);
}

如果颜色在调色板上并且单元格不为空,则此代码将输出背景颜色:

function numberColors4(){
var colorCol = 1;
var numberCol = 11;
var firstDataRow = 2;

var palette = [
"#ffffff",  // Default 
"#ff9900",  // Orange 8
"#00b0f0", // Light Blue 1
"#ffff00", // yellow 4 
"#93c47d", // Green 7
"#00ff00", // Light Green 5
"#9900ff", // Purple 6
"#ff0000", // Red 3
"#5f5f5f" // Grey 2     
];
var numbers = [];
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var dataNumRows = activeSheet.getMaxRows()-(firstDataRow-1);
var colorColColors = activeSheet.getRange(2, colorCol, dataNumRows, 1).getBackgrounds();
var colorColTexts = activeSheet.getRange(2, colorCol, dataNumRows, 1).getValues();
for (var rowIndex=0; rowIndex<colorColColors.length; rowIndex++){
var rowColor = colorColColors[rowIndex].toString();
var rowText = colorColTexts[rowIndex].toString();
if (palette.includes(rowColor) && rowText != ""){
numbers.push([palette.indexOf(rowColor)]);
}
else{
numbers.push([""]);
}
}
activeSheet.getRange(2, numberCol, dataNumRows, 1).setValues(numbers);
}

主要变化

  • 除了colorColColors,它还使用getValues((方法获取单元格内的文本(**colorColTexts(
  • 只有一个if语句:它检查单元格的背景色是否在调色板内以及单元格是否为空。如果满足条件,颜色代码将写入电子表格。如果其中任何一个失败,将在电子表格中写入一个空字符串

最新更新