[英]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.