teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

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

2021/06/02 13:36

投稿

donguriko
donguriko

スコア30

title CHANGED
File without changes
body CHANGED
@@ -102,8 +102,8 @@
102
102
  sh_temp1.copyTo(ss).activate();
103
103
  ss.moveActiveSheet(2);
104
104
 
105
- //「目標入力シート」の氏名(C2)の内容を「入力シート」にコピー
105
+ //「シートA」の氏名(C2)の内容を「入力シート」にコピー
106
- const sh_temp2 = ss.getSheetByName("目標入力シート");
106
+ const sh_temp2 = ss.getSheetByName("シートA");
107
107
  const sh_new = ss.getSheetByName("週報ひな形 のコピー");
108
108
 
109
109
  //コピー元のシートの中のセルを指定
@@ -112,21 +112,21 @@
112
112
  //コピー先のシートの中のセルを指定して、コピー実行
113
113
  sh_new.getRange('E4').setValues(copyValue1);
114
114
 
115
- //「目標入力シート」の目①(C6)の内容を「入力シート」にコピー
115
+ //「シートA」の目①(C6)の内容を「入力シート」にコピー
116
116
  //コピー元のシートの中のセルを指定
117
117
  const copyValue2 = sh_temp2.getRange('C6').getValues();
118
118
 
119
119
  //コピー先のシートの中のセルを指定して、コピー実行
120
120
  sh_new.getRange('E6').setValues(copyValue2);
121
121
 
122
- //「目標入力シート」の目②(C7)の内容を「入力シート」にコピー
122
+ //「シートA」の目②(C7)の内容を「入力シート」にコピー
123
123
  //コピー元のシートの中のセルを指定
124
124
  const copyValue3 = sh_temp2.getRange('C7').getValues();
125
125
 
126
126
  //コピー先のシートの中のセルを指定して、コピー実行
127
127
  sh_new.getRange('E7').setValues(copyValue3);
128
128
 
129
- //「目標入力シート」の目③(C8)の内容を「入力シート」にコピー
129
+ //「シートA」の目③(C8)の内容を「入力シート」にコピー
130
130
  //コピー元のシートの中のセルを指定
131
131
  const copyValue4 = sh_temp2.getRange('C8').getValues();
132
132
 

1

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

2021/06/02 13:36

投稿

donguriko
donguriko

スコア30

title CHANGED
File without changes
body CHANGED
@@ -16,10 +16,11 @@
16
16
 
17
17
  ③スプレッドシート内の「ひな形シート」をコピー
18
18
 
19
- ④上記③の「新シート」を一番左に移動
19
+ ④上記③の「新シート」を一番左から2番目に移動 
20
20
 
21
21
  ⑤上記③のシート名を①の名称に変更
22
22
 
23
+
23
24
  ### 発生している問題・エラーメッセージ
24
25
  処理①で、
25
26
  1つ目の「GAS実行日(openDate)」の取得はできました。
@@ -34,26 +35,115 @@
34
35
 
35
36
  ###エラーメッセージ
36
37
  ReferenceError: mySheetName is not defined
38
+ myFunction2 @ 週次入力シート作成.gs:53
37
39
 
38
40
  ### 該当のソースコード
39
- //「GAS実行日(openDate)」の取得
40
- const openDate = new Date()
41
+ 長文となりますが、記載したコード全文を記載します。
41
- Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyyMMdd');
42
42
 
43
+ function myFunction2() {
44
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
45
+ const date = Utilities.formatDate(new Date(), 'Asia/Tokyo','yyyyMMdd');
46
+
43
- //「週の金曜付(closeDate)の取得(月曜の場合)
47
+ //「入力シート」「終了」指定準備_「開始日」曜判定
48
+ const openDate = new Date()
49
+ const o=Utilities.formatDate(openDate, 'Asia/Tokyo', 'yyyyMMdd');
44
50
  const openDay = openDate.getDay()
51
+ console.log(openDay);
52
+ console.log(o);
53
+
54
+ //(条件1)「開始日」が月曜のとき「終了日」は4日後をセット
45
55
  if (openDay ==1) {
46
56
  const closeDate =new Date(openDate.setDate(openDate.getDate() + 4));
47
- const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMd');
57
+ const c = Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
58
+ console.log(c);
59
+
60
+ //(条件2)火曜のとき「終了日」は3日後をセット
61
+ }else if (openDay ==2) {
62
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 3));
63
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
64
+ console.log(c);
65
+
66
+ //(条件3)水曜のとき「終了日」は2日後をセット
67
+ }else if (openDay ==3) {
68
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 2));
69
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
70
+ console.log(c);
71
+
72
+ //(条件4)木曜のとき「終了日」は1日後をセット
73
+ }else if (openDay ==2) {
74
+ const closeDate =new Date(openDate.setDate(openDate.getDate() + 1));
75
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
76
+ console.log(c);
77
+
78
+ //(条件5)金曜のとき
79
+ }else if (openDay ==1) {
80
+ const closeDate =setDate(openDate.getDate());
81
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
82
+ console.log(c);
83
+
84
+ //(条件6)それ以外のとき 当日日付をセット
85
+ }else {
86
+  const closeDate =setDate(openDate)
87
+ const c =Utilities.formatDate(closeDate, 'Asia/Tokyo', 'yyyyMMdd');
88
+ console.log(c);
48
89
 
49
- //★合体させようとして失敗しているコード
90
+ //★ここで失敗していそうです!! 「実行」クリックしてもここから先の処理は行われていない。
50
- const mySheetName = openDate + "-" + c
91
+ const mySheetName = o + "-" + c
92
+ console.log(mySheetName);
93
+ }
94
+
95
+ // すでに「入力シート」が作られていたらメッセージ1を表示し、処理終了
96
+ if (ss.getSheetByName(mySheetName) != null) {
97
+ Browser.msgBox("今週分のシートはすでに「作成済」です。\n処理を中止します。\nファイル内のシートをもう一度確認してください。");
98
+
99
+ //存在しない場合は、処理継続
100
+ }else{
101
+ //「週報ひな形」シートをコピーし(一番右に追加される)新「入力シート」を左から2番目に移動する。(一番左は「ひな形」)
102
+ sh_temp1.copyTo(ss).activate();
103
+ ss.moveActiveSheet(2);
51
104
 
52
- //合体が成功したらやろうとしていたシート名変更
105
+ //「目標入力シート」の氏(C2)の内容を「入力シート」にコピー
106
+ const sh_temp2 = ss.getSheetByName("目標入力シート");
53
- const ss = SpreadsheetApp.getActiveSpreadsheet();
107
+ const sh_new = ss.getSheetByName("週報ひな形 のコピー");
54
- ~略~
55
- ss.rename(mySheetName)
56
108
 
109
+ //コピー元のシートの中のセルを指定
110
+ const copyValue1 = sh_temp2.getRange('C2').getValues();
111
+
112
+ //コピー先のシートの中のセルを指定して、コピー実行
113
+ sh_new.getRange('E4').setValues(copyValue1);
114
+
115
+ //「目標入力シート」の目標①(C6)の内容を「入力シート」にコピー
116
+ //コピー元のシートの中のセルを指定
117
+ const copyValue2 = sh_temp2.getRange('C6').getValues();
118
+
119
+ //コピー先のシートの中のセルを指定して、コピー実行
120
+ sh_new.getRange('E6').setValues(copyValue2);
121
+
122
+ //「目標入力シート」の目標②(C7)の内容を「入力シート」にコピー
123
+ //コピー元のシートの中のセルを指定
124
+ const copyValue3 = sh_temp2.getRange('C7').getValues();
125
+
126
+ //コピー先のシートの中のセルを指定して、コピー実行
127
+ sh_new.getRange('E7').setValues(copyValue3);
128
+
129
+ //「目標入力シート」の目標③(C8)の内容を「入力シート」にコピー
130
+ //コピー元のシートの中のセルを指定
131
+ const copyValue4 = sh_temp2.getRange('C8').getValues();
132
+
133
+ //コピー先のシートの中のセルを指定して、コピー実行
134
+ sh_new.getRange('E8').setValues(copyValue4);
135
+
136
+ //「入力シート」のシート名編集
137
+ const sh_temp1 = ss.getSheetByName("週報ひな形");
138
+
139
+ const mySheetname = ss.rename(+openDate + "-" + closeDate)
140
+ console.log(mySheetName);
141
+
142
+ //シート追加のメッセージ2を表示
143
+ Browser.msgBox("今週分の入力シートを作成しました。内容を入力してください。");
144
+ }
145
+ }
146
+
57
147
  どこがマズく、どう修正すればよいかアドバイスをいただけないでしょうか?
58
148
  お忙しいところ申し訳ありませんがGASビギナーでも分かるよう解説いただける
59
149
  と助かります。