【问题标题】:Change cell value based on the cell's background color in Google Sheets根据 Google 表格中单元格的背景颜色更改单元格值
【发布时间】:2021-03-23 18:44:33
【问题描述】:

在 Google 表格中,我想根据单元格的背景颜色更改单元格值(在本例中是添加文本)。例如,如果单元格的背景颜色为绿色(#62a84f),如附图所示,我想在单元格中自动插入文本“g”。 Please see the picture 我找到了以下脚本,但无法弄清楚如何让它工作:

function myFunction() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prosinec+Leden");

  var data1 = sheet1.getDataRange().getValues();  //2D array of sheet1 cell values
  var bg;

  for(var i=1; i<data1.length; i++)
  {
    bg = sheet1.getRange(?).getBackground();
    if(bg == "#62a84f")  
    {
      sheet1.getRange(?).setValue("x");  //Set value in corresponding row of sheet1
    }    
  }
}

*很少的背景信息 - 我在一所小学工作,我们每周都会评估学生的进步,让我们可以节省大量工作来编写这个脚本。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    解释:

    虽然这可能不是问题,但您选择的颜色 "#62a84f" 不是颜色选择器菜单中的默认颜色之一。为了测试下面的代码,我使用了默认的#34a853

    但是,如果您确定您的颜色确实是 "#62a84f",那么请继续使用它并将我的代码的相关部分更改为您的情况。


    我使用双 map 来迭代 rng 中的每个单元格。范围越大,代码的性能越慢。我强烈建议您使用某些特定范围而不是整个数据范围。

    也就是说,您可能想要替换:

    const rng = sheet1.getDataRange();const rng = sheet1.getRange('B2:D10');

    假设您要检查'B2:D10' 范围内的绿色单元格。

    您希望使用此方法的另一个原因是您可能有一些绿色单元格,在 DataRange 之外没有任何内容,因此您的范围将不包含这些单元格。因此,请仔细考虑您的方案是什么,然后选择最适合您的方法。

    解决方案:

    function myFunction() {
      const sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prosinec+Leden");
      const rng = sheet1.getDataRange();
      const colors = rng.getBackgrounds();
      const values = rng.getValues();
      colors.map((r,i)=>r.map((c,j)=>{
        if(c=='#34a853'){
        values[i][j]="g";
        }}));
      rng.clearContent();
      rng.setValues(values);   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多