我的作業表中的 A 列有復選框。我正在撰寫一個簡單的腳本來查找選中的復選框(單元格值 = TRUE),取消選中它(將其更改為 FALSE),然后檢查列中的下一個復選框(使該單元格值 = TRUE)。
這是我的代碼:
function nextCheckbox() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet()
var checkmarks = ss.getRangeByName("update_checkmarks").getValues().flat(); //this range is column A
Logger.log(checkmarks.indexOf(true)); //this logs 8.0, which is the correct row for the checked box in column A
var rowNum = checkmarks.indexOf(true);
Logger.log(rowNum); // this logs 8.0, as expected
var cell = sheet.getRange(rowNum,1);
cell.setValue(false); //nothing happens here...
var cell = sheet.getRange(rowNum 1,1);
cell.setValue(true); //nothing happens here...
}
日志記錄記錄預期的行號 (8.0)。但是當我使用 setValue 時沒有任何反應。我做錯了什么?
uj5u.com熱心網友回復:
關于獲取/設定復選框的值
而不是使用
setValue考慮使用check()/uncheck()以上是因為復選框可能對選中/未選中狀態使用自定義值。
關于indexOf/getRange的使用
indexOf將使用基于 0 的編號回傳索引,這意味著 0 對應于第一個值,1 對應于第二個值,依此類推。SpreadsheetApp.Sheet.Range.getRange(row,column)需要基于 1 的索引,這意味著第一行是 1,第二行是 2。
考慮到上述替換
var rowNum = checkmarks.indexOf(true);經過
var rowNum = checkmarks.indexOf(true) 1;
資源
