在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"
您选择的颜色不是颜色选择器菜单中的默认颜色之一。为了测试以下代码,我使用了默认值#34a853
:
但是,如果您确定自己的颜色确实正确,"#62a84f"
则继续使用该颜色,然后将我的代码的相关部分更改为您的情况。
我使用了double 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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句