回答編集履歴
9
test
CHANGED
@@ -20,8 +20,8 @@
|
|
20
20
|
}
|
21
21
|
|
22
22
|
if (count >= 3) return;
|
23
|
+
|
23
24
|
props.setProperty(address, ++count);
|
24
|
-
|
25
25
|
if (count === 3) {
|
26
26
|
sh.getRange(e.range.rowStart, e.range.columnStart, 1, 1).setBackground("black");
|
27
27
|
}
|
8
test
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
return;
|
20
20
|
}
|
21
21
|
|
22
|
-
if (count =
|
22
|
+
if (count >= 3) return;
|
23
23
|
props.setProperty(address, ++count);
|
24
24
|
|
25
25
|
if (count === 3) {
|
7
test
CHANGED
@@ -30,5 +30,6 @@
|
|
30
30
|
※
|
31
31
|
※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの書き込みサイズ制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください。
|
32
32
|
|
33
|
-
※ もちろん、PropertiesService ではなく、別の回数記録専用シートを作っておいてそれに回数を記録するという手段も取れます
|
33
|
+
※ もちろん、PropertiesService ではなく、別の回数記録専用シートを作っておいてそれに回数を記録するという手段も取れます(コードは割愛)
|
34
|
+
。(「すべてのシート」という要件を満たさなくなってしまうため回答には採用しませんでしたが)
|
34
35
|
|
6
test
CHANGED
@@ -23,8 +23,12 @@
|
|
23
23
|
props.setProperty(address, ++count);
|
24
24
|
|
25
25
|
if (count === 3) {
|
26
|
-
sh.getRange(e.range.rowStart, e.range.columnStart, 1, 1).setBackground("black")
|
26
|
+
sh.getRange(e.range.rowStart, e.range.columnStart, 1, 1).setBackground("black");
|
27
27
|
}
|
28
28
|
}
|
29
29
|
```
|
30
|
+
※
|
30
|
-
※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの書き込みサイズ制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください
|
31
|
+
※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの書き込みサイズ制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください。
|
32
|
+
|
33
|
+
※ もちろん、PropertiesService ではなく、別の回数記録専用シートを作っておいてそれに回数を記録するという手段も取れます。(コードは割愛)「すべてのシート」という要件を満たさなくなってしまうため回答には採用しませんでしたが。
|
34
|
+
|
5
test
CHANGED
@@ -27,4 +27,4 @@
|
|
27
27
|
}
|
28
28
|
}
|
29
29
|
```
|
30
|
-
※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの
|
30
|
+
※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの書き込みサイズ制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください・
|
4
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
この場合、下記のようなコードになると思われます。
|
6
6
|
|
7
|
-
(PropertiesService の DocumentProperties に"編集"されたセルのアドレス
|
7
|
+
(PropertiesService の DocumentProperties に、「キー="編集"されたシート名・セルのアドレス、値="編集"回数」として書き込む)
|
8
8
|
|
9
9
|
```js
|
10
10
|
function onEdit(e) {
|
3
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
対象範囲や「編集回数」の"編集”について詳細な定義が一切書かれていないので
|
2
|
-
一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、
|
2
|
+
一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、rowStart と columnStart のみ、黒塗りする対象セルとする」と見なしました。
|
3
3
|
また、シート名には「^」記号が含まれていないものと見なしています。
|
4
4
|
|
5
5
|
この場合、下記のようなコードになると思われます。
|
2
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
対象範囲や「編集回数」の"編集”について詳細な定義が一切書かれていないので
|
2
2
|
一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRow と startColumn のみ、黒塗りする対象セルとする」と見なしました。
|
3
|
+
また、シート名には「^」記号が含まれていないものと見なしています。
|
3
4
|
|
4
5
|
この場合、下記のようなコードになると思われます。
|
5
6
|
|
@@ -8,13 +9,13 @@
|
|
8
9
|
```js
|
9
10
|
function onEdit(e) {
|
10
11
|
const props = PropertiesService.getDocumentProperties();
|
11
|
-
const sh = SpreadsheetApp.getActive().getActiveSheet()
|
12
|
+
const sh = SpreadsheetApp.getActive().getActiveSheet();
|
12
|
-
const shid = sh.getSheetId()
|
13
|
+
const shid = sh.getSheetId();
|
13
14
|
const address = [shid, e.range.rowStart, e.range.columnStart].join("^");
|
14
15
|
let count = props.getProperty(address);
|
15
16
|
|
16
17
|
if (count == null) {
|
17
|
-
props.setProperty(address, 1)
|
18
|
+
props.setProperty(address, 1);
|
18
19
|
return;
|
19
20
|
}
|
20
21
|
|
1
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
「編集回数」の"編集”について詳細な定義が一切書かれていないので
|
1
|
+
対象範囲や「編集回数」の"編集”について詳細な定義が一切書かれていないので
|
2
|
-
一番単純に「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRow と startColumn のみ、黒塗りする対象セルとする」と見なしました。
|
2
|
+
一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRow と startColumn のみ、黒塗りする対象セルとする」と見なしました。
|
3
3
|
|
4
4
|
この場合、下記のようなコードになると思われます。
|
5
5
|
|