質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

584閲覧

GASからgoogleカレンダーに入力できない

k_code

総合スコア20

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/06/30 07:10

編集2021/07/01 01:50

前提・実現したいこと

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値は消えて、正常に動きました。)
しかしながら、明らかに動作スピードは落ちていますし、私の中でももやもやが残っているので解決済みにはせず、情報をいただきたいのでこのまま質問を開き続けようかと思います。
ここまで回答していただいた方、本当にありがとうございました( ;∀;)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/30 07:15

xxxxxxxxxxxx@group.calendar.google.comの部分が間違ってないか確かめましたか?
k_code

2021/06/30 07:19

はい。一応確認はしてみたのですが、間違ってはいないようでして... 別のコードを書いて確認しましたが、エラーにはなりませんでした。
neconekocat

2021/06/30 07:40

ちなみにそのxのカレンダーはgetAllCalendarsではちゃんととれますか?
k_code

2021/07/01 00:20

ちなみにそのxのカレンダーはgetAllCalendarsではちゃんととれますか? -->はい。取得できました。 あなたのカレンダーですか? -->はい。自分のアカウントにて作成したカレンダーを使用しています。   しかしながら、スクリプトの元は別アカウントのスプレットシートの共有より使用しています。   実行に関してはカレンダーのアカウントにて起動しているので、大丈夫かと思われるんですが...
k_code

2021/07/01 00:57

GASにてスクリプトを動かす際、カレンダーの予定を何度も取得・記入すると処理落ちみたいなものは起こるものなのでしょうか...? そのようなことが起こるのであれば、コード等をもっと小分けにして考えようと思うのですが...
kikukiku

2021/07/01 01:33

自分のカレンダーの過去の情報をすべてGASで消そうとしたことがありましたが、何年分も一気に消そうとすると、途中まで消せているのですが、途中でエラーになることを確認したことがあります。結局1か月単位で消すことで回避しました。
k_code

2021/07/01 01:47

結局1か月単位で消すことで回避しました -->そもそも、カレンダーの情報すら取得できていないので、回避どころか予定を見ることすらできません。 情報については非常にありがたいのですが、なぜ情報が取得できずにいるのか?どのようにすれば情報を取得できるのか?という解決案をお教えしていただけると幸いです。
kikukiku

2021/07/01 02:44

下記のコメントに対して経験があったため、参考になるのではないかという思いで記述させて頂きましたが、ご迷惑だったようで、コメントは差異控えさせて頂きます。 == カレンダーの予定を何度も取得・記入すると処理落ちみたいなものは起こるものなのでしょうか...?
macaron_xxx

2021/07/01 03:36

nullになる場合は、「カレンダーが存在しない」、「アクセスできない」、「サブスクライブしていない」のいずれかです。 getAllCalendarで取得できているのであれば、IDが間違っているとしか考えられないのですが。
k_code

2021/07/01 04:23

getAllCalendarで取得できているのであれば、IDが間違っているとしか考えられないのですが。 -->そうですか...。上記に書かれていることに関して、すべてクリアしてあるので、何らかの問題がGAS側かカレンダー側にあるのか、はたまた私のスクリプトの書き方が悪いのか... どちらにしても今の私には解決できない問題なので地道に探していきたいと思います...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問