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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

5515閲覧

Googleカレンダーの予定が取得されない

SSATO

総合スコア5

Google カレンダー

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/01/25 07:06

前提・実現したいこと

自分(@gmail.com)のGoogleカレンダーの予定を取得、書き出したく、
GASで以下のスクリプトを書きましたが、エラーもでず、
「events.length」が0となり、予定が無い状態となります。
該当期間内に予定は多数登録されています。

発生している問題・エラーメッセージ

エラーは一切表示されません。代わりに以下のログが出力されます。 [20-01-25 16:01:59:668 JST] 【Weekend Plans】 [20-01-25 16:01:59:669 JST] from=Sat Jan 25 2020 16:01:59 GMT+0900 (JST) [20-01-25 16:01:59:669 JST] end=Mon May 04 2020 16:01:59 GMT+0900 (JST) [20-01-25 16:01:59:730 JST] calendar = Calendar [20-01-25 16:01:59:731 JST] イベント数 = 0 [20-01-25 16:01:59:731 JST] カレンダーの名前 = Namae [20-01-25 16:01:59:732 JST] タイムゾーン = Asia/Tokyo

該当のソースコード

GAS

1function NotifyWeekendPlans() { 2 Logger.log('【Weekend Plans】'); 3 var id = 'xxx@gmail.com'; 4  var now = new Date(); 5  now.setDate(now.getDate()); 6  var from = now; 7  Logger.log('from='+from); 8 now.setDate(now.getDate() + 100); 9 var end = now; 10 Logger.log('end='+end); 11 12//カレンダー情報取得 13 //var calendar = CalendarApp.getDefaultCalendar(); 14 var calendar = CalendarApp.getCalendarById(id); 15 var events = calendar.getEvents(from, end); 16 var calname = calendar.getName(); 17 var caldesc = calendar.getDescription(); 18 19 Logger.log('calendar = '+calendar); 20 Logger.log('イベント数 = '+events.length); 21 Logger.log('カレンダーの名前 = '+calname); 22 Logger.log('タイムゾーン = '+calendar.getTimeZone()); 23 var maxRow = 1; 24 for(var i = 0; i < events.length; i++){ 25 Logger.log( 26 maxRow + "|" + 27 events[i].getTitle()+"|"+ 28 events[i].getStartTime()+"|"+ 29 events[i].getEndTime() 30 ); 31 maxRow++; 32 } 33} 34

試したこと

・ コメントアウトされていますが、「CalendarApp.getDefaultCalendar();」でも
結果は同じでした
・ 別のGoogleアカウント(仕事用G Suiteの自分のアカウント)では
同じコードで予定が取得、表示できました。
そのため、ソースではなくカレンダーの設定?の問題の可能性もありますが、
見る限り特に違いは有りません。
また、タイムゾーン、カレンダー名などは表示されるため、カレンダーオブジェクト自体は
取得できていると思われます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

papinianus

2020/01/25 13:20

その予定は、どのカレンダーの予定なんでしょうか。仕事用のアカウントの予定なんじゃないでしょうか。
SSATO

2020/01/25 23:52

問題の事象が出ているのは、個人のアカウント(@gmail.com)です。スクリプトもその個人のアカウントから作成しています。スクリプト実行時のアカウント認証も取れています。
guest

回答1

0

ベストアンサー

質問文を繰り返す必要はありません。カレンダーイベントがどのカレンダーに結びついたものかという話です。カレンダーを人間が見たときに見える予定は、参照を許可された他のカレンダーのイベントが含まれます。

・getAllCalendarsで全てのカレンダーを取得し、全ての予定をとる
・スクリプトからカレンダーイベントを作ってから、あらためて取得して確認する

といったことをすれば多少なりとも先にすすめるのではないかと思います。

投稿2020/01/26 00:47

編集2020/01/26 00:49
papinianus

総合スコア12705

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

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

papinianus

2020/01/26 00:55

発生している問題、を言語化すると、自分は予定が多数あると思っているのに、0個しか取れないだとおもいます。 どこに問題があるかと考えたとき、仕事用アカウントで正しく動いているコードが問題である可能性は低いはずだと捉えています。仕事用アカウントで正常に動作してない状況があるなら質問に追記してください
SSATO

2020/01/26 04:54

いろいろご教示ありがとうございます。 仕事用はエラー、想定外の結果など問題は有りません。 また、イベントとそれが紐付いているカレンダーは把握しているつもりです。 getAllCalendarsで関連カレンダー取得、表示はできました。 そこで表示されたカレンダーは全て私が認識しているものです。 また、それらデフォルトカレンダー含めた関連カレンダーにそれぞれスクリプトからcreateeventでイベント新規作成はできました。カレンダー画面でもイベントが作成されたことが確認できます。 が、やはりスクリプトからgeteventsでは、イベント件数は0となってしまいます。 GASを始めたのも最近のため、もう少し勉強しながら調べてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問