前提・実現したいこと
GoogleAppsScript(GAS)にてgoogleフォームからgoogleカレンダー自動記入アプリのコードを書いている途中、エラーが起こり、解決できません...
どこでエラーが起きているのかはわかりますが(途中のログに出てくるNull)、なぜ出るのかがわからず...
すべてにnullがでるならコードが間違っている可能性があるので一からやり直しますが、一つだけnullが出てきます。(ID以外使いまわしなので、間違っているならすべてエラーになるかと...)
原因がわかる方、どなたでも大丈夫なので、知恵をお貸しいただけませんでしょうか?
発生している問題・エラーメッセージ
TypeError: Cannot read property 'getEvents' of undefined
該当のソースコード
gas
1//前略 2//開始日・終了日ともにdate関数を用いて日付にしています 3//名前・予定・場所はそれぞれ文字列として格納してあります 4 5 var x = CalendarApp.getCalendarById("xxxxxxxxxxxx@group.calendar.google.com") 6 var y = CalendarApp.getCalendarById("yyyyyyyyyyyy@group.calendar.google.com") 7 var z = CalendarApp.getCalendarById("zzzzzzzzzzzz@group.calendar.google.com") 8 Logger.log(x) //<--nullと出る 9 Logger.log(y)//<--calenderと出る 10 Logger.log(z)//<--calenderと出る 11 12switch (名前で判別){ 13 case 'A': 14 var c = x 15 Logger.log(x)//<--nullのまま 16 if(!c.getEvents(開始日,終了日).length){ //<--ここでエラー 17 c.createAllDayEvent(名前,開始日,終了日,{description:予定+" "+場所}) 18 }; 19 break 20 case 'B': 21 var c = y 22 Logger.log(y) 23 if(!c.getEvents(開始日,終了日).length){ 24 c.createAllDayEvent(名前,開始日,終了日,{description:予定+" "+場所}) 25 }; 26 break 27 case 'C': 28 var c = z 29 Logger.log(z) 30 if(!c.getEvents(開始日,終了日).length){ 31 c.createAllDayEvent(名前,開始日,終了日,{description:予定+" "+場所}) 32 }; 33 break 34 } //y,zに関しては何もなくカレンダーに記入できます。 35 //後略
試したこと
xのカレンダーを一から作り直し、xのコード、IDをもう一度記入しました。(IDは新しいもの)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
###追記
現在作成中のスクリプトの前に、一度完成させ終わったスクリプトを元として、functionを小分けにしてコード全体をすっきりさせようと現在のスクリプトを作成しています。(一つ目のスクリプトは1つのfunctionで済ませていた)
そのため、一つ前のスクリプトではNull値が出ず、しっかりと動作していました。
###再追記
ひとまず、動作させるために名前で判別させるswitch構文をもう一枚かませて、カレンダーを取得できていないものとできているもので分けて取得するようなコードを書きました。(それによりnull値は消えて、正常に動きました。)
しかしながら、明らかに動作スピードは落ちていますし、私の中でももやもやが残っているので解決済みにはせず、情報をいただきたいのでこのまま質問を開き続けようかと思います。
ここまで回答していただいた方、本当にありがとうございました( ;∀;)
あなたの回答
tips
プレビュー