Google 表格:从另一个单元格的值获取单元格颜色十六进制值

问题描述 投票:0回答:1

我有一个包含 2 张表格的 Google 表格文件:
L1:我的开支清单(屏幕截图) Expenses listing

如您所见,有两列,名为 Tag #1 和 Tag #2。这些链接到我创建的标签列表。

调色板:这张表代表我在文件中采用的颜色编码。 (屏幕截图)

Color Palette sheet

我想更改标签 #1 和标签 #2 单元格的颜色,以匹配其在调色板表中的标签颜色。
我知道我可以使用条件格式来做到这一点,但是有没有办法直接从调色板表中的

Hex Code
列链接我在条件格式化程序中选择的颜色?

google-sheets hex conditional-formatting drive
1个回答
0
投票

有这方面的插件,但它们早已消亡了。尝试:

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 表:

enter image description here

和调色板表:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.