回答編集履歴

11

switch文に関する注意を追加

2021/10/03 00:08

投稿

退会済みユーザー
test CHANGED
@@ -189,3 +189,11 @@
189
189
 
190
190
 
191
191
  今回は、無題()関数の中に、さらに関数myFunctionを入れる必要はないので、function myFunction{と対応する}の行を削除しています。
192
+
193
+
194
+
195
+ 注意:switch文を使う場合、**各処理の終わりのbreak**を忘れないでください。
196
+
197
+ break文を適切な場所に書いていないと、次の処理まで実行されてしまいます。
198
+
199
+ (break文を忘れるリスクがあるため、switchは非推奨とし、代わりにif~else文や、関数の連想配列を使用すべき、としている説明もあります)

10

元のコメントで全角スペースとなっていたのをそのままにしてしまっていたので修正

2021/10/03 00:08

投稿

退会済みユーザー
test CHANGED
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
-  sheet.getRange("A1").activate();
177
+ sheet.getRange("A1").activate();
178
178
 
179
179
 
180
180
 

9

2021/10/02 02:45

投稿

退会済みユーザー
test CHANGED
@@ -178,7 +178,9 @@
178
178
 
179
179
 
180
180
 
181
+ -}} // 「myFunction{」に対応する 「}」を削除
182
+
181
- }
183
+ +}
182
184
 
183
185
  ```
184
186
 

8

コメントが後だし修正があったので修正

2021/10/02 01:58

投稿

退会済みユーザー
test CHANGED
@@ -184,6 +184,6 @@
184
184
 
185
185
 
186
186
 
187
- 「保存できません」ということですが、中括弧{}の数が対応していないのが原因です。
188
187
 
188
+
189
- 今回は、無題()関数の中に、さらに関数myFunctionを入れる必要はないので、function myFunctionの行を削除しています。
189
+ 今回は、無題()関数の中に、さらに関数myFunctionを入れる必要はないので、function myFunction{と対応する}の行を削除しています。

7

2021/10/02 01:57

投稿

退会済みユーザー
test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
  コメント中のコードの修正ですが、下記のようになります。
88
88
 
89
- (先頭ga+となっている行は追加、-となっている行は削除)
89
+ (先頭が「+となっている行は追加、-となっている行は削除)
90
90
 
91
91
  ```diff
92
92
 

6

コメント中のコードの修正

2021/10/02 01:55

投稿

退会済みユーザー
test CHANGED
@@ -82,8 +82,108 @@
82
82
 
83
83
 
84
84
 
85
- なお、仮に「シート1~シート4の中に共通の処理があるため、それをまとめたい」ということならば、
85
+ ---
86
86
 
87
- シート1~シート4それぞれで行いたいコードを個別全部記載してください
87
+ コメント中のコードの修正ですが、下記のようなります
88
88
 
89
+ (先頭ga+となっている行は追加、-となっている行は削除)
90
+
91
+ ```diff
92
+
93
+ function 無題() {
94
+
95
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
96
+
97
+
98
+
99
+ var sheet = ss.getSheetByName("展開");
100
+
101
+ sheet.getRange(1, 1).setValue("日付");
102
+
103
+ sheet.getRange(1, 2).setValue("会社名");
104
+
105
+ sheet.getRange(1, 3).setValue("No");
106
+
107
+
108
+
109
+
110
+
111
+ var sheet0 = ss.getActiveSheet();
112
+
113
+ var cell = sheet0.getActiveCell();
114
+
115
+
116
+
117
+ if (cell.getColumn() != 1) {
118
+
119
+ var row = cell.getRow();
120
+
121
+ var column = cell.getColumn();
122
+
123
+
124
+
125
+ - function myFunction() { // ここでは不要。
126
+
127
+ - let values = null; // 変数valuesは下記caseの中では使用していないので不要
128
+
89
- 具体的なコドを書いていただかない以上、それらの処理の共通部分をどの程度まとられるのか、アドバイスのしようもないと思います
129
+ - switch (sheet0) { // シトオブジェクトでswitchししまってためNG
130
+
131
+ + switch (sheet0.getSheetName()) { // ここではシート名でswitchするのが正しい。
132
+
133
+ case "T/B":
134
+
135
+ var value1 = cell.offset((row-1)*(-1),0).getValue();
136
+
137
+ var value2 = cell.offset(0,(column-1)*(-1)+2).getValue();
138
+
139
+ sheet.getRange(1, 1).setValue(value1);
140
+
141
+ sheet.getRange(1, 4).setValue(value2);
142
+
143
+ sheet.getRange(1, 12).setValue(value2);
144
+
145
+ break;
146
+
147
+
148
+
149
+ case "消費税":
150
+
151
+ var value3 = cell.offset((row-1)*(-1),0).getValue();
152
+
153
+ var value4 = cell.offset(0,(column-1)*(-1)+2).getValue();
154
+
155
+ var value5 = cell.offset(0,(column-1)*(-1)+1).getValue();
156
+
157
+
158
+
159
+ sheet.getRange(1, 1).setValue(value3);
160
+
161
+ sheet.getRange(1, 7).setValue(value4);
162
+
163
+ sheet.getRange(1, 15).setValue(value4);
164
+
165
+ sheet.getRange(1, 2).setValue(value5);
166
+
167
+ break;
168
+
169
+
170
+
171
+ }
172
+
173
+ }
174
+
175
+
176
+
177
+  sheet.getRange("A1").activate();
178
+
179
+
180
+
181
+ }
182
+
183
+ ```
184
+
185
+
186
+
187
+ 「保存できません」ということですが、中括弧{}の数が対応していないのが原因です。
188
+
189
+ 今回は、無題()関数の中に、さらに関数myFunctionを入れる必要はないので、function myFunctionの行を削除しています。

5

2021/10/02 01:50

投稿

退会済みユーザー
test CHANGED
@@ -54,13 +54,27 @@
54
54
 
55
55
  break;
56
56
 
57
+
58
+
59
+ default:
60
+
61
+ // activeSheetNameが「シート1」「シート2」「シート3」以外の場合、何もしない。
62
+
63
+ return;
64
+
57
65
  }
58
66
 
59
67
 
60
68
 
61
69
  // シート4に対して共通処理を行う
62
70
 
71
+ if (values != null) {
72
+
63
- sheet4.getRange("C3:F5").setValues(values);
73
+ sheet4.getRange("C3:F5").setValues(values);
74
+
75
+ // ~~
76
+
77
+ }
64
78
 
65
79
  }
66
80
 

4

2021/10/01 14:43

投稿

退会済みユーザー
test CHANGED
@@ -12,11 +12,17 @@
12
12
 
13
13
  const activeSheetName = activeSheet.getSheetName();
14
14
 
15
+ const sheet4 = ss.getSheetByName('シート4');
16
+
15
17
 
16
18
 
17
19
  // 各シートのボタンに紐付けているスクリプトは、myFunction(共通)
18
20
 
19
21
  function myFunction() {
22
+
23
+ let values = null;
24
+
25
+ // シート名に応じて処理を分ける
20
26
 
21
27
  switch (activeSheetName) {
22
28
 
@@ -24,7 +30,7 @@
24
30
 
25
31
  // シート1の処理
26
32
 
27
- activeSheet.getRange("A1:D3").setValues(~~);
33
+ values = activeSheet.getRange("A1:D3").getValues();
28
34
 
29
35
  break;
30
36
 
@@ -34,7 +40,7 @@
34
40
 
35
41
  // シート2の処理
36
42
 
37
- activeSheet.getRange("E1:H3").setValues(~~);
43
+ values = activeSheet.getRange("E1:H3").getValues();
38
44
 
39
45
  break;
40
46
 
@@ -44,31 +50,17 @@
44
50
 
45
51
  // シート3の処理
46
52
 
47
- activeSheet.getRange("A10:D14").setValues(~~);
48
-
49
- break;
50
-
51
-
52
-
53
- case 'シート4':
54
-
55
- // シート4の処理
56
-
57
- const a = activeSheet.getRange("A10:D14").getValues();
53
+ values = activeSheet.getRange("A10:D12").getValues();
58
-
59
- for (let i of a) {
60
-
61
- for (let j of i) {
62
-
63
- //~何かの処理~
64
-
65
- }
66
-
67
- }
68
54
 
69
55
  break;
70
56
 
71
57
  }
58
+
59
+
60
+
61
+ // シート4に対して共通処理を行う
62
+
63
+ sheet4.getRange("C3:F5").setValues(values);
72
64
 
73
65
  }
74
66
 

3

2021/10/01 14:40

投稿

退会済みユーザー
test CHANGED
@@ -14,55 +14,61 @@
14
14
 
15
15
 
16
16
 
17
- switch (activeSheetName) {
17
+ // 各シートのボタンに紐付けているスクリプトは、myFunction(共通)
18
18
 
19
- case 'シート1':
19
+ function myFunction() {
20
20
 
21
- // シート1の処理
21
+ switch (activeSheetName) {
22
22
 
23
- activeSheet.getRange("A1:D3").setValues(~~)
23
+ case 'シート1':
24
24
 
25
+ // シート1の処理
26
+
27
+ activeSheet.getRange("A1:D3").setValues(~~);
28
+
25
- break;
29
+ break;
26
30
 
27
31
 
28
32
 
29
- case 'シート2':
33
+ case 'シート2':
30
34
 
31
- // シート2の処理
35
+ // シート2の処理
32
36
 
33
- activeSheet.getRange("E1:H3").setValues(~~)
37
+ activeSheet.getRange("E1:H3").setValues(~~);
34
38
 
35
- break;
39
+ break;
36
40
 
37
41
 
38
42
 
39
- case 'シート3':
43
+ case 'シート3':
40
44
 
41
- // シート3の処理
45
+ // シート3の処理
42
46
 
43
- activeSheet.getRange("A10:D14").setValues(~~)
47
+ activeSheet.getRange("A10:D14").setValues(~~);
44
48
 
45
- break;
49
+ break;
46
50
 
47
51
 
48
52
 
49
- case 'シート4':
53
+ case 'シート4':
50
54
 
51
- // シート4の処理
55
+ // シート4の処理
52
56
 
53
- const a = activeSheet.getRange("A10:D14").getValues();
57
+ const a = activeSheet.getRange("A10:D14").getValues();
54
58
 
55
- for (let i of a){
59
+ for (let i of a) {
56
60
 
57
- for (let j of i){
61
+ for (let j of i) {
58
62
 
59
- //~何かの処理~
63
+ //~何かの処理~
64
+
65
+ }
60
66
 
61
67
  }
62
68
 
63
- }
69
+ break;
64
70
 
65
- break;
71
+ }
66
72
 
67
73
  }
68
74
 

2

2021/10/01 14:17

投稿

退会済みユーザー
test CHANGED
@@ -6,7 +6,11 @@
6
6
 
7
7
  ```
8
8
 
9
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
10
+
11
+ const activeSheet = ss.getActiveSheet();
12
+
9
- const activeSheetName = ss.getActiveSheet().getSheetName();
13
+ const activeSheetName = activeSheet.getSheetName();
10
14
 
11
15
 
12
16
 
@@ -16,6 +20,8 @@
16
20
 
17
21
  // シート1の処理
18
22
 
23
+ activeSheet.getRange("A1:D3").setValues(~~)
24
+
19
25
  break;
20
26
 
21
27
 
@@ -23,6 +29,8 @@
23
29
  case 'シート2':
24
30
 
25
31
  // シート2の処理
32
+
33
+ activeSheet.getRange("E1:H3").setValues(~~)
26
34
 
27
35
  break;
28
36
 
@@ -32,6 +40,8 @@
32
40
 
33
41
  // シート3の処理
34
42
 
43
+ activeSheet.getRange("A10:D14").setValues(~~)
44
+
35
45
  break;
36
46
 
37
47
 
@@ -39,6 +49,18 @@
39
49
  case 'シート4':
40
50
 
41
51
  // シート4の処理
52
+
53
+ const a = activeSheet.getRange("A10:D14").getValues();
54
+
55
+ for (let i of a){
56
+
57
+ for (let j of i){
58
+
59
+ //~何かの処理~
60
+
61
+ }
62
+
63
+ }
42
64
 
43
65
  break;
44
66
 

1

2021/10/01 14:14

投稿

退会済みユーザー
test CHANGED
@@ -50,6 +50,6 @@
50
50
 
51
51
  なお、仮に「シート1~シート4の中に共通の処理があるため、それをまとめたい」ということならば、
52
52
 
53
- そのシート1~シート4の処理コードを全部記載してください。
53
+ そのシート1~シート4それぞれ行いたいコードを個別に全部記載してください。
54
54
 
55
55
  具体的なコードを書いていただかない以上、それらの処理の共通部分をどの程度まとめられるのか、アドバイスのしようもないと思います。