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

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

ただいまの
回答率

87.35%

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,232

score 5

前提・実現したいこと

自分(@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

該当のソースコード

function NotifyWeekendPlans() {
  Logger.log('【Weekend Plans】');
    var id = 'xxx@gmail.com';
   var now = new Date();
   now.setDate(now.getDate());
   var from = now;
   Logger.log('from='+from);
   now.setDate(now.getDate() + 100);
   var end = now;
   Logger.log('end='+end);

//カレンダー情報取得  
  //var calendar = CalendarApp.getDefaultCalendar();
  var calendar = CalendarApp.getCalendarById(id);
  var events = calendar.getEvents(from, end);
  var calname = calendar.getName();
  var caldesc = calendar.getDescription();  

  Logger.log('calendar = '+calendar);
  Logger.log('イベント数 = '+events.length);
  Logger.log('カレンダーの名前 = '+calname);  
  Logger.log('タイムゾーン = '+calendar.getTimeZone());
  var maxRow = 1;
  for(var i = 0; i < events.length; i++){
    Logger.log(
    maxRow + "|" +
    events[i].getTitle()+"|"+
    events[i].getStartTime()+"|"+
    events[i].getEndTime()
    );
    maxRow++;
  }
}

試したこと

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • papinianus

    2020/01/25 22:20

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

    キャンセル

  • SSATO

    2020/01/26 08:52

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

    キャンセル

回答 1

checkベストアンサー

0

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/26 09:55

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

    キャンセル

  • 2020/01/26 13:54

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

    キャンセル

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

  • ただいまの回答率 87.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る