回答編集履歴

9

 

2022/11/21 22:06

投稿

退会済みユーザー
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

2022/11/21 22:01

投稿

退会済みユーザー
test CHANGED
@@ -19,7 +19,7 @@
19
19
  return;
20
20
  }
21
21
 
22
- if (count === 3) return;
22
+ if (count >= 3) return;
23
23
  props.setProperty(address, ++count);
24
24
 
25
25
  if (count === 3) {

7

 

2022/11/21 15:20

投稿

退会済みユーザー
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

  

2022/11/21 15:18

投稿

退会済みユーザー
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

 

2022/11/21 15:14

投稿

退会済みユーザー
test CHANGED
@@ -27,4 +27,4 @@
27
27
  }
28
28
  }
29
29
  ```
30
- ※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの呼び出し回数制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください・
30
+ ※ 編集回数があまりに多いと、onEditの呼び出し回数制限や、SpreadSheetAppsのAPI回数制限、PropertiesServiceの書き込みサイズ制限等に引っ掛かって動作しなくなりますが、GASとは「そういうもの」ですので、事前に御了承ください・

4

 

2022/11/21 14:54

投稿

退会済みユーザー
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

2022/11/21 14:53

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
1
  対象範囲や「編集回数」の"編集”について詳細な定義が一切書かれていないので
2
- 一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRowstartColumn のみ、黒塗りする対象セルとする」と見なしました。
2
+ 一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、rowStart と columnStart のみ、黒塗りする対象セルとする」と見なしました。
3
3
  また、シート名には「^」記号が含まれていないものと見なしています。
4
4
 
5
5
  この場合、下記のようなコードになると思われます。

2

 

2022/11/21 14:36

投稿

退会済みユーザー
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

 

2022/11/21 14:35

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
- 「編集回数」の"編集”について詳細な定義が一切書かれていないので
1
+ 対象範囲や「編集回数」の"編集”について詳細な定義が一切書かれていないので
2
- 一番単純に「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRow と startColumn のみ、黒塗りする対象セルとする」と見なしました。
2
+ 一番単純に"すべてのシート・すべてのセル範囲において"「編集回数 = onEditトリガーが呼び出される回数」かつ、「複数のセルが同時に編集された場合であっても、startRow と startColumn のみ、黒塗りする対象セルとする」と見なしました。
3
3
 
4
4
  この場合、下記のようなコードになると思われます。
5
5