我有一个包含 2 张表格的 Google 表格文件:
L1:我的开支清单(屏幕截图)
如您所见,有两列,名为 Tag #1 和 Tag #2。这些链接到我创建的标签列表。
调色板:这张表代表我在文件中采用的颜色编码。 (屏幕截图)
我想更改标签 #1 和标签 #2 单元格的颜色,以匹配其在调色板表中的标签颜色。
我知道我可以使用条件格式来做到这一点,但是有没有办法直接从调色板表中的
Hex Code
列链接我在条件格式化程序中选择的颜色?
有这方面的插件,但它们早已消亡了。尝试:
function onEdit(e) {
var range = e.range;
var sheetName = range.getSheet().getName();
// Only run the function if the edited range is in sheet 'L1' and within F2:G
if (sheetName === 'L1' && range.getColumn() >= 6 && range.getColumn() <= 7 && range.getRow() >= 2) {
setColorsBasedOnPalette();
}}
function setColorsBasedOnPalette() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('L1');
var paletteSheet = ss.getSheetByName('Color Palette');
// Get the data ranges
var rangeToCheck = sheet.getRange('F2:G' + sheet.getLastRow());
var paletteRange = paletteSheet.getRange('A2:B' + paletteSheet.getLastRow());
// Convert ranges to arrays
var dataToCheck = rangeToCheck.getValues();
var paletteData = paletteRange.getValues();
// Create a map from the Color Palette sheet
var colorMap = {};
paletteData.forEach(function(row) {
var key = row[0];
var color = row[1];
if (key && color) {
colorMap[key] = color;
}
});
// Iterate through the cells in L1!F2:G and set background color
for (var i = 0; i < dataToCheck.length; i++) {
for (var j = 0; j < dataToCheck[i].length; j++) {
var cellValue = dataToCheck[i][j];
var cell = rangeToCheck.getCell(i + 1, j + 1);
if (colorMap[cellValue]) {
cell.setBackground(colorMap[cellValue]);
} else {
cell.setBackground(null); // Reset to default if no match found
}}}}
其中 L1 表:
和调色板表: