回答編集履歴

1

質問が修正されたので、回答も修正しました。

2023/04/12 03:10

投稿

YellowGreen
YellowGreen

スコア827

test CHANGED
@@ -1,3 +1,49 @@
1
+ --<2回目の回答>--
2
+
3
+ 当初提示いただいたスクリプトは、勤務日に'年'や'月'が含まれている記述式の回答を前提としていましたが、
4
+ 追加していただいた画像にあるように、日付、時刻として回答を得ているということですね。
5
+
6
+ そうであれば、もう少し簡単になります。
7
+ まず、重ねて発生しているエラーを防止するために、
8
+ スクリプトの冒頭に次のコードを追加します。
9
+
10
+ ```js
11
+ function createEvent(e) {
12
+ //エラー防止のため、以下の5行を追加
13
+ if (e === undefined) {
14
+ console.log('このスクリプトは、エディタから実行できません。');
15
+ console.log('フォームに回答してみてください。');
16
+ return;
17
+ }
18
+ ```
19
+
20
+ 次に、日付と時刻の処理を次のようにします。
21
+
22
+ ```js
23
+ // let hoursS = Number(time1.split(':')[0]);
24
+ // let minutesS = Number(time1.split(':')[1]);
25
+ // let hoursE = Number(time2.split(':')[0]);
26
+ // let minutesE = Number(time2.split(':')[1]);
27
+ // let startTime = new Date(y, m, d, hoursS, minutesS);
28
+ // let endTime = new Date(y, m, d, hoursE, minutesE);
29
+ let startTime = new Date(date + ' ' + time1);//' 'の中は、半角スペース
30
+ let endTime = new Date(date + ' ' + time2);
31
+ ```
32
+
33
+ 最後に、カレンダーへの反映の変数名を再修正します。
34
+
35
+ ```js
36
+ // Calendar.createEvent(title, startTime, endTime);
37
+ calendar.createEvent(title, startTime, endTime);
38
+ ```
39
+
40
+ なお、フォームの送信から起動するスクリプトは、時々送信時の値を取得できないことが
41
+ ありますので、カレンダーに反映されていないときは、時間をおいて再度お試しください。
42
+ エディタの実行数からトリガー実行に失敗したログをクリックすると
43
+ エラーメッセージにもそのように記載されています。
44
+ Exception: Failed to retrieve form data. Please wait and try again.
45
+
46
+ --<最初の回答>--
1
47
  勤務日、開始時間、終了時間共に記述式で、年は2023年4月12日、時間は9:30と入力するのですね。
2
48
  修正が必要なところがいくつかあります。
3
49