回答編集履歴

6

追加

2021/06/27 12:09

投稿

退会済みユーザー
test CHANGED
@@ -97,3 +97,315 @@
97
97
  + const closeDay = '(' + array[closeDayN] + ')';
98
98
 
99
99
  ```
100
+
101
+
102
+
103
+
104
+
105
+ ---
106
+
107
+ 追記:
108
+
109
+ 修正後の全体コードは下記のようになります。
110
+
111
+
112
+
113
+ ```
114
+
115
+ function myFunction2() {
116
+
117
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
118
+
119
+ const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMdd');
120
+
121
+
122
+
123
+ //シート名生成処理の際、文字列にできるようにconstではなくletで定義
124
+
125
+ let mySheetName = "";
126
+
127
+ let closeDay = "";
128
+
129
+
130
+
131
+ //「入力シート」のシート名指定準備_「開始日」曜日の判定
132
+
133
+ const openDate = new Date()
134
+
135
+ const o1 = Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyyMMdd');
136
+
137
+ const o2 = Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
138
+
139
+ const openDayN = openDate.getDay()
140
+
141
+ const array = ['日', '月', '火', '水', '木', '金', '土'];
142
+
143
+ const openDay = '(' + array[openDayN] + ')';
144
+
145
+ console.log(o1 + openDay + "~");
146
+
147
+ mySheetName = o1 + "~";
148
+
149
+ console.log(mySheetName);
150
+
151
+
152
+
153
+ // すでに「入力シート」が作られていたらメッセージ1を表示し、処理終了
154
+
155
+ if (ss.getSheetByName(mySheetName) != null) {
156
+
157
+ Browser.msgBox("今週分のシートはすでに「作成済」です。\n処理を中止します。\nファイル内のシートをもう一度確認してください。");
158
+
159
+   return;
160
+
161
+ //存在しない場合は、処理継続
162
+
163
+ } else {
164
+
165
+ //「週報ひな形」シートをコピーし(一番右に追加される)新「入力シート」を左から2番目に移動する。
166
+
167
+ const sh_temp1 = ss.getSheetByName("週報ひな形");
168
+
169
+ const sh_new = sh_temp1.copyTo(ss)
170
+
171
+
172
+
173
+ ss.moveActiveSheet(2);
174
+
175
+
176
+
177
+ //「目標入力シート」の氏名(C2)の内容を「入力シート」氏名欄(E3、E64)にコピー
178
+
179
+ const sh_temp2 = ss.getSheetByName("目標入力シート");
180
+
181
+ const copyValue1 = sh_temp2.getRange('C2').getValues();
182
+
183
+ console.log(copyValue1);
184
+
185
+ sh_new.activate()
186
+
187
+ sh_new.getRange('E3').setValue(copyValue1);
188
+
189
+ sh_new.getRange('E64').setValue(copyValue1);
190
+
191
+
192
+
193
+ //「目標入力シート」の目標①(C6)の内容を「入力シート」目標①欄(F5、F66)にコピー
194
+
195
+ const copyValue2 = sh_temp2.getRange('C6').getValues();
196
+
197
+ console.log(copyValue2);
198
+
199
+ sh_new.getRange('F5').setValue(copyValue2);
200
+
201
+ sh_new.getRange('F66').setValue(copyValue2);
202
+
203
+
204
+
205
+ //「目標入力シート」の目標②(C7)の内容を「入力シート」目標②欄(F6、F67)にコピー
206
+
207
+ const copyValue3 = sh_temp2.getRange('C7').getValues();
208
+
209
+ console.log(copyValue3);
210
+
211
+ sh_new.getRange('F6').setValue(copyValue3);
212
+
213
+ sh_new.getRange('F67').setValue(copyValue3);
214
+
215
+
216
+
217
+ //「目標入力シート」の目標③(C8)の内容を「入力シート」目標③欄(F7、F68)にコピーにコピー
218
+
219
+ const copyValue4 = sh_temp2.getRange('C8').getValues();
220
+
221
+ console.log(copyValue4);
222
+
223
+ sh_new.getRange('F7').setValue(copyValue4);
224
+
225
+ sh_new.getRange('F68').setValue(copyValue4);
226
+
227
+
228
+
229
+ //「入力シート」の日付欄(U3)の指定準備_終了日の判定
230
+
231
+ //(条件1)「開始日」が月曜のとき「終了日」は4日後をセット
232
+
233
+ if (openDayN == 1) {
234
+
235
+ closeDate = new Date(openDate.setDate(openDate.getDate() + 4));
236
+
237
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
238
+
239
+ const closeDayN = closeDate.getDay()
240
+
241
+ const closeDay = '(' + array[closeDayN] + ')';
242
+
243
+ const myDate = o2 + openDay + "~" + c + closeDay;
244
+
245
+ console.log(o2 + openDay);
246
+
247
+ console.log(myDate);
248
+
249
+ sh_new.getRange('U3').setValue(o1 + openDay);
250
+
251
+ sh_new.getRange('AD3').setValue(c + closeDay);
252
+
253
+ sh_new.getRange('U64').setValue(o1 + openDay);
254
+
255
+ sh_new.getRange('AD64').setValue(c + closeDay);
256
+
257
+
258
+
259
+ //(条件2)火曜のとき「終了日」は3日後をセット
260
+
261
+ } else if (openDayN == 2) {
262
+
263
+ closeDate = new Date(openDate.setDate(openDate.getDate() + 3));
264
+
265
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
266
+
267
+ const closeDayN = closeDate.getDay()
268
+
269
+ const closeDay = '(' + array[closeDayN] + ')';
270
+
271
+ const myDate = o2 + openDay + "~" + c + closeDay;
272
+
273
+ console.log(o2 + openDay);
274
+
275
+ console.log(myDate);
276
+
277
+ sh_new.getRange('U3').setValue(o1 + openDay);
278
+
279
+ sh_new.getRange('AE3').setValue(c + closeDay);
280
+
281
+ sh_new.getRange('U64').setValue(o1 + openDay);
282
+
283
+ sh_new.getRange('AE64').setValue(c + closeDay);
284
+
285
+
286
+
287
+ //(条件3)水曜のとき「終了日」は2日後をセット
288
+
289
+ } else if (openDayN == 3) {
290
+
291
+ closeDate = new Date(openDate.setDate(openDate.getDate() + 2));
292
+
293
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
294
+
295
+ const closeDayN = closeDate.getDay()
296
+
297
+ const closeDay = '(' + array[closeDayN] + ')';
298
+
299
+ const myDate = o2 + openDay + "~" + c + closeDay;
300
+
301
+ console.log(o2 + openDay);
302
+
303
+ console.log(myDate);
304
+
305
+ sh_new.getRange('U3').setValue(o1 + openDay);
306
+
307
+ sh_new.getRange('AE3').setValue(c + closeDay);
308
+
309
+ sh_new.getRange('U64').setValue(o1 + openDay);
310
+
311
+ sh_new.getRange('AE64').setValue(c + closeDay);
312
+
313
+
314
+
315
+ //(条件4)木曜のとき「終了日」は1日後をセット
316
+
317
+ } else if (openDayN == 2) {
318
+
319
+ closeDate = new Date(openDate.setDate(openDate.getDate() + 1));
320
+
321
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
322
+
323
+ const closeDayN = closeDate.getDay()
324
+
325
+ const closeDay = '(' + array[closeDayN] + ')';
326
+
327
+ const myDate = o2 + openDay + "~" + c + closeDay;
328
+
329
+ console.log(o2 + openDay);
330
+
331
+ console.log(myDate);
332
+
333
+ sh_new.getRange('U3').setValue(o1 + openDay);
334
+
335
+ sh_new.getRange('AE3').setValue(c + closeDay);
336
+
337
+ sh_new.getRange('U64').setValue(o1 + openDay);
338
+
339
+ sh_new.getRange('AE64').setValue(c + closeDay);
340
+
341
+
342
+
343
+ //(条件5)金曜のとき
344
+
345
+ } else if (openDayN == 1) {
346
+
347
+ closeDate = new Date(openDate.setDate(openDate.getDate()));
348
+
349
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
350
+
351
+ const closeDayN = closeDate.getDay()
352
+
353
+ const closeDay = '(' + array[closeDayN] + ')';
354
+
355
+ const myDate = o2 + openDay + "~" + c + closeDay;
356
+
357
+ console.log(o2 + openDay);
358
+
359
+ console.log(myDate);
360
+
361
+ sh_new.getRange('U3').setValue(o1 + openDay);
362
+
363
+ sh_new.getRange('AE3').setValue(c + closeDay);
364
+
365
+ sh_new.getRange('U64').setValue(o1 + openDay);
366
+
367
+ sh_new.getRange('AE64').setValue(c + closeDay);
368
+
369
+
370
+
371
+ //(条件6)それ以外のとき 当日日付をセット
372
+
373
+ } else {
374
+
375
+ closeDate = new Date(openDate.setDate(openDate.getDate()));
376
+
377
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyy年MM月dd日');
378
+
379
+ const closeDayN = closeDate.getDay()
380
+
381
+ const closeDay = '(' + array[closeDayN] + ')';
382
+
383
+ const myDate = o2 + openDay + "~" + c + closeDay;
384
+
385
+ console.log(o2 + openDay);
386
+
387
+ console.log(myDate);
388
+
389
+ sh_new.getRange('U3').setValue(o1 + openDay);
390
+
391
+ sh_new.getRange('AE3').setValue(c + closeDay);
392
+
393
+ sh_new.getRange('U64').setValue(o1 + openDay);
394
+
395
+ sh_new.getRange('AE64').setValue(c + closeDay);
396
+
397
+ }
398
+
399
+ //「入力シート」のシート名編集
400
+
401
+ sh_new.setName(mySheetName);
402
+
403
+ }
404
+
405
+ //シート追加済のメッセージ2を表示
406
+
407
+ Browser.msgBox("今週分の入力シートを作成しました。内容を入力してください。");
408
+
409
+ }
410
+
411
+ ```

5

修正

2021/06/27 12:09

投稿

退会済みユーザー
test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  const sh_new = ss.getSheetByName("ひな形 のコピー");
60
60
 
61
- sh_new.getRange('E3').setValues(copyValue1);  ←2次元配列をそのままsetValuesに渡すのでエ ラーにならない。
61
+ sh_new.getRange('E3').setValues(copyValue1);  ←2次元配列をそのままsetValuesに渡すのでエラーにならない。
62
62
 
63
63
  sh_new.getRange('E64').setValues(copyValue1); ←同上
64
64
 
@@ -68,7 +68,7 @@
68
68
 
69
69
   
70
70
 
71
- 2.質問と直接関係有馬園が他の行で引用符が揃っていない部分があります。
71
+ 2.質問と直接関係はないです他の行で引用符が揃っていない部分があります。
72
72
 
73
73
  ('と’のペアになってしまっています)
74
74
 

4

修正

2021/06/27 10:33

投稿

退会済みユーザー
test CHANGED
@@ -42,7 +42,9 @@
42
42
 
43
43
   
44
44
 
45
- 注意:同じsetValuesを使う場合でも、書き込もうとしているデータがgetValuesで取得したデータの場合は、2次元配列として取得されるため、エラーになりません。
45
+ 注意:書き込もうとしているデータがgetValuesで取得したデータの場合は、2次元配列として取得されるため、setValues()を使ってもエラーになりません。
46
+
47
+
46
48
 
47
49
  ```diff
48
50
 

3

修正

2021/06/27 10:32

投稿

退会済みユーザー
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- setValues()の代わりに、setValue()を使えば2次元配列を使わずに単一セルの値を書き込めます。
25
+ または、setValues()の代わりに、setValue()を使えば2次元配列を使わずに単一セルの値を書き込めます。
26
26
 
27
27
  どちらにするかは好みですが、直すならばこちらの方が楽だと思います。
28
28
 

2

修正

2021/06/27 10:31

投稿

退会済みユーザー
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
   
44
44
 
45
- 注意:同じsetValuesを使っている場合でも、書き込もうとしているデータがgetValuesで取得したデータは2次元配列として取得されるため、エラーになりません。
45
+ 注意:同じsetValuesを使場合でも、書き込もうとしているデータがgetValuesで取得したデータの場合2次元配列として取得されるため、エラーになりません。
46
46
 
47
47
  ```diff
48
48
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  const sh_temp2 = ss.getSheetByName("入力シート");
52
52
 
53
- const copyValue1 = sh_temp2.getRange('C2').getValues();  ←copyValue1はgetValuesで取得されているので2次元配列。
53
+ const copyValue1 = sh_temp2.getRange('C2').getValues();  ←copyValue1はgetValues()で取得されているので2次元配列。
54
54
 
55
55
  console.log(copyValue1);
56
56
 

1

修正

2021/06/27 10:30

投稿

退会済みユーザー
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- ※setValue()関数の場合は、書き込みたい値をそのまま渡せばよい
39
+ ※setValue()関数を使えば、書き込みたい値をそのまま渡せ
40
40
 
41
41
  ``` 
42
42