gs
1// 該当セルの行列とセルの値
2let a2_6CellStr = [
3 '2,1'
4 , '3,1'
5 , '4,1'
6 , '5,1'
7 , '6,1'
8]
9
10let ss = SpreadsheetApp.getActiveSpreadsheet()
11let sheetName = 'シート31'
12let sheet = ss.getSheetByName(sheetName)
13
14function onEdit(e) {
15
16 let editSheet = e.source.getActiveSheet().getName()
17
18 // シート31 以外が編集された場合、以降の処理を行わない
19 if (sheetName !== editSheet) return
20
21 // 編集された行、列
22 let editRow = e.range.getRow()
23 let editCol = e.range.getColumn()
24
25 // A2~A6セルの場合
26 if (a2_6CellStr.filter(e => { if(e == `${editRow},${editCol}`) return true }) != "") {
27
28 // 入力された値
29 let editValue = e.value
30 // 入力される前の値
31 let oldEditValue = e.oldValue
32
33 if (oldEditValue != editValue) {
34 // 該当セルが変更された場合
35 sheet.getRange(`C${editRow}`).setValue(false)
36 }
37 }
38
39 // C2~C6セルのチェック値
40 let c2_6CellValue = [
41 sheet.getRange("C2").getValue()
42 , sheet.getRange("C3").getValue()
43 , sheet.getRange("C4").getValue()
44 , sheet.getRange("C5").getValue()
45 , sheet.getRange("C6").getValue()
46 ]
47
48 // C2~C6セルのチェック
49 if (c2_6CellValue.filter(e => { if (e) return true }).length == 5) {
50 // 別の処理
51 test()
52 }
53}
54
55function test() {
56 sheet.getRange("D6").setValue("全チェック付きで、別処理実行")
57}
こんな感じでしょうか?
A2~A6セルの値は不明だったので「A2〜A6」で定義しています。
C2〜C6セルのチェック確認については、どのような仕様かわからないので、「シート31」であれば毎回起動する状態です。
追記
セルA2が変更された → セルC2のチェックを外すを
A6 → C6まで対応しました。