質問編集履歴

2

コード内のシート名、項目名を変更しました。

2021/06/02 13:36

投稿

donguriko
donguriko

スコア30

test CHANGED
File without changes
test CHANGED
@@ -206,9 +206,9 @@
206
206
 
207
207
 
208
208
 
209
- //「目標入力シート」の氏名(C2)の内容を「入力シート」にコピー
209
+ //「シートA」の氏名(C2)の内容を「入力シート」にコピー
210
-
210
+
211
- const sh_temp2 = ss.getSheetByName("目標入力シート");
211
+ const sh_temp2 = ss.getSheetByName("シートA");
212
212
 
213
213
  const sh_new = ss.getSheetByName("週報ひな形 のコピー");
214
214
 
@@ -226,7 +226,7 @@
226
226
 
227
227
 
228
228
 
229
- //「目標入力シート」の目①(C6)の内容を「入力シート」にコピー
229
+ //「シートA」の目①(C6)の内容を「入力シート」にコピー
230
230
 
231
231
  //コピー元のシートの中のセルを指定
232
232
 
@@ -240,7 +240,7 @@
240
240
 
241
241
 
242
242
 
243
- //「目標入力シート」の目②(C7)の内容を「入力シート」にコピー
243
+ //「シートA」の目②(C7)の内容を「入力シート」にコピー
244
244
 
245
245
  //コピー元のシートの中のセルを指定
246
246
 
@@ -254,7 +254,7 @@
254
254
 
255
255
 
256
256
 
257
- //「目標入力シート」の目③(C8)の内容を「入力シート」にコピー
257
+ //「シートA」の目③(C8)の内容を「入力シート」にコピー
258
258
 
259
259
  //コピー元のシートの中のセルを指定
260
260
 

1

<修正1>処理③を修正 一番左⇒左から2番目 <修正2>コードを全文記載

2021/06/02 13:36

投稿

donguriko
donguriko

スコア30

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- ④上記③の「新シート」を一番左に移動
37
+ ④上記③の「新シート」を一番左から2番目に移動 
38
38
 
39
39
 
40
40
 
@@ -42,6 +42,8 @@
42
42
 
43
43
 
44
44
 
45
+
46
+
45
47
  ### 発生している問題・エラーメッセージ
46
48
 
47
49
  処理①で、
@@ -70,43 +72,221 @@
70
72
 
71
73
  ReferenceError: mySheetName is not defined
72
74
 
75
+ myFunction2 @ 週次入力シート作成.gs:53
76
+
73
77
 
74
78
 
75
79
  ### 該当のソースコード
76
80
 
81
+ 長文となりますが、記載したコード全文を記載します。
82
+
83
+
84
+
85
+ function myFunction2() {
86
+
87
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
88
+
89
+ const date = Utilities.formatDate(new Date(), 'Asia/Tokyo','yyyyMMdd');
90
+
91
+
92
+
77
- //「GAS実行(openDate)」の取得
93
+ //「入力シート」の「終了日」指定準備_「開始日」曜日判定
78
-
94
+
79
- const openDate = new Date()
95
+ const openDate = new Date()
80
-
96
+
81
- Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyyMMdd');
97
+ const o=Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyyMMdd');
82
-
83
-
84
-
85
- //「その週の金曜日の日付(closeDate)」の取得(月曜の場合)
86
98
 
87
99
  const openDay = openDate.getDay()
88
100
 
101
+ console.log(openDay);
102
+
103
+ console.log(o);
104
+
105
+
106
+
107
+ //(条件1)「開始日」が月曜のとき「終了日」は4日後をセット
108
+
89
109
  if (openDay ==1) {
90
110
 
91
111
  const closeDate =new Date(openDate.setDate(openDate.getDate() + 4));
92
112
 
93
- const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMd');
94
-
95
-
96
-
97
- //★合体させようとして失敗しているコード
98
-
99
- const mySheetName = openDate + "-" + c
100
-
101
-
102
-
103
- //合体が成功したらやろうとしていたシート名変更
104
-
105
- const ss = SpreadsheetApp.getActiveSpreadsheet();
106
-
107
- ~略~
108
-
109
- ss.rename(mySheetName)
113
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
114
+
115
+ console.log(c);
116
+
117
+
118
+
119
+ //(条件2)火曜のとき「終了日」は3日後をセット
120
+
121
+ }else if (openDay ==2) {
122
+
123
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 3));
124
+
125
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
126
+
127
+ console.log(c);
128
+
129
+
130
+
131
+ //(条件3)水曜のとき「終了日」は2日後をセット
132
+
133
+ }else if (openDay ==3) {
134
+
135
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 2));
136
+
137
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
138
+
139
+ console.log(c);
140
+
141
+
142
+
143
+ //(条件4)木曜のとき「終了日」は1日後をセット
144
+
145
+ }else if (openDay ==2) {
146
+
147
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 1));
148
+
149
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
150
+
151
+ console.log(c);
152
+
153
+
154
+
155
+ //(条件5)金曜のとき
156
+
157
+ }else if (openDay ==1) {
158
+
159
+ const closeDate =setDate(openDate.getDate());
160
+
161
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
162
+
163
+ console.log(c);
164
+
165
+
166
+
167
+ //(条件6)それ以外のとき 当日日付をセット
168
+
169
+ }else {
170
+
171
+  const closeDate =setDate(openDate)
172
+
173
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
174
+
175
+ console.log(c);
176
+
177
+
178
+
179
+ //★ここで失敗していそうです!! 「実行」クリックしてもここから先の処理は行われていない。
180
+
181
+ const mySheetName = o + "-" + c
182
+
183
+ console.log(mySheetName);
184
+
185
+ }
186
+
187
+
188
+
189
+ // すでに「入力シート」が作られていたらメッセージ1を表示し、処理終了
190
+
191
+ if (ss.getSheetByName(mySheetName) != null) {
192
+
193
+ Browser.msgBox("今週分のシートはすでに「作成済」です。\n処理を中止します。\nファイル内のシートをもう一度確認してください。");
194
+
195
+
196
+
197
+ //存在しない場合は、処理継続
198
+
199
+ }else{
200
+
201
+ //「週報ひな形」シートをコピーし(一番右に追加される)新「入力シート」を左から2番目に移動する。(一番左は「ひな形」)
202
+
203
+ sh_temp1.copyTo(ss).activate();
204
+
205
+ ss.moveActiveSheet(2);
206
+
207
+
208
+
209
+ //「目標入力シート」の氏名(C2)の内容を「入力シート」にコピー
210
+
211
+ const sh_temp2 = ss.getSheetByName("目標入力シート");
212
+
213
+ const sh_new = ss.getSheetByName("週報ひな形 のコピー");
214
+
215
+
216
+
217
+ //コピー元のシートの中のセルを指定
218
+
219
+ const copyValue1 = sh_temp2.getRange('C2').getValues();
220
+
221
+
222
+
223
+ //コピー先のシートの中のセルを指定して、コピー実行
224
+
225
+ sh_new.getRange('E4').setValues(copyValue1);
226
+
227
+
228
+
229
+ //「目標入力シート」の目標①(C6)の内容を「入力シート」にコピー
230
+
231
+ //コピー元のシートの中のセルを指定
232
+
233
+ const copyValue2 = sh_temp2.getRange('C6').getValues();
234
+
235
+
236
+
237
+ //コピー先のシートの中のセルを指定して、コピー実行
238
+
239
+ sh_new.getRange('E6').setValues(copyValue2);
240
+
241
+
242
+
243
+ //「目標入力シート」の目標②(C7)の内容を「入力シート」にコピー
244
+
245
+ //コピー元のシートの中のセルを指定
246
+
247
+ const copyValue3 = sh_temp2.getRange('C7').getValues();
248
+
249
+
250
+
251
+ //コピー先のシートの中のセルを指定して、コピー実行
252
+
253
+ sh_new.getRange('E7').setValues(copyValue3);
254
+
255
+
256
+
257
+ //「目標入力シート」の目標③(C8)の内容を「入力シート」にコピー
258
+
259
+ //コピー元のシートの中のセルを指定
260
+
261
+ const copyValue4 = sh_temp2.getRange('C8').getValues();
262
+
263
+
264
+
265
+ //コピー先のシートの中のセルを指定して、コピー実行
266
+
267
+ sh_new.getRange('E8').setValues(copyValue4);
268
+
269
+
270
+
271
+ //「入力シート」のシート名編集
272
+
273
+ const sh_temp1 = ss.getSheetByName("週報ひな形");
274
+
275
+
276
+
277
+ const mySheetname = ss.rename(+openDate + "-" + closeDate)
278
+
279
+ console.log(mySheetName);
280
+
281
+
282
+
283
+ //シート追加のメッセージ2を表示
284
+
285
+ Browser.msgBox("今週分の入力シートを作成しました。内容を入力してください。");
286
+
287
+ }
288
+
289
+ }
110
290
 
111
291
 
112
292