使用此脚本,该脚本为除默认单元格外的所有颜色单元格按顺序写入颜色编号。
我想写默认颜色的值,这样我以后可以排序。
但它不应该为那个些空行写入值,但它也在为空行写入值。
任何帮助都将不胜感激。
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语句:它检查单元格的背景色是否在调色板内以及单元格是否为空。如果满足条件,颜色代码将写入电子表格。如果其中任何一个失败,将在电子表格中写入一个空字符串