目標:
- 獲取已編輯的復選框
- 獲取范圍內的所有復選框(第 2-7 列,與編輯的復選框相同的行)
- 如果所有復選框都回傳“TRUE”,則在范圍內設定背景(第 1-7 列,與已編輯復選框相同的行)
似乎代碼什么都不做。
function onEdit(event) {
var sheet = event.source.getActiveSheet(), //get edited sheet
row = event.range.getRow(), // get row needed
column = 2, // set the starting column
test,
userValues = [];
while (column<=7) {
if (sheet.getValue(row,column) == "TRUE") {
test = true
} else {
test = false;
break;
}
column ;
}
if (test) {
sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8");
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您有“B”到“G”列的復選框。
- 選中從列“B”到“G”的所有復選框時,要將列的背景顏色設定為同一行的“G”
#b6d7a8。 - 在您的情況下,我猜想當未選中所有復選框時,您可能希望將背景顏色設定為默認顏色。
當我看到你的腳本時,getValue是在回圈中使用的。在這種情況下,處理成本會很高。并且,當您使用 時sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8"),您可以使用sheet.getRange(row,1,1,7).setBackground("#b6d7a8").
在這種情況下,如何進行以下修改?
修改后的腳本:
function onEdit(event) {
var sheetName = "Sheet1"; // Please set the sheet name.
var range = event.range;
var sheet = event.source.getActiveSheet();
if (sheet.getSheetName() != sheetName || range.columnStart < 2 || range.columnStart > 7) return;
var r = sheet.getRange(range.rowStart, 1, 1, 7)
var checks = r.offset(0, 1, 1, 6).getValues()[0].every(e => e === true);
r.setBackground(checks ? "#b6d7a8" : null);
}
- 當您使用此腳本時,請選中“B”到“G”列的復選框。檢查從列“B”到“G”的所有復選框時,將列“A”到“G”的背景顏色更改為
#b6d7a8。
筆記:
此腳本由 OnEdit 觸發器運行。所以請編輯從“B”到“G”列的復選框單元格。這樣,腳本就運行了。當您使用腳本編輯器直接運行此腳本時,會出現錯誤。請注意這一點。
當您不需要檢查作業表名稱時,您還可以使用以下腳本。
function onEdit(event) { var range = event.range; var sheet = event.source.getActiveSheet(); if (range.columnStart < 2 || range.columnStart > 7) return; var r = sheet.getRange(range.rowStart, 1, 1, 7) var checks = r.offset(0, 1, 1, 6).getValues()[0].every(e => e === true); r.setBackground(checks ? "#b6d7a8" : null); }
參考:
- 每一個()
- 設定背景(顏色)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449468.html
