繁体   English   中英

根据 Google 表格中单元格的背景颜色更改单元格值

[英]Change cell value based on the cell's background color in Google Sheets

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

 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 } } }

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

解释:

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

在此处输入图像描述

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


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

即,您可能想要替换:

const rng = sheet1.getDataRange(); with 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);   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM