簡體   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