Google Apps Script 時短ツール

【簡単】GASでカレンダーの予定を自動で取得

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

Googleカレンダーの当日の予定を一覧表示できたら便利だと思いませんか?

この記事ではそんなあったらいいなを、Google Apps Scriptで解決します。

あっきょ
この記事は以下で悩んでいる人におすすめ!

  • 1日のスケジュールを一覧表示して予定を確認したい
  • Google カレンダーをもっと賢く使いたい
  • プログラミングでJavaScriptを学んだけど、何を作っていいかわからない

誰でも無料で簡単にできますので、お気軽に学んでいきましょう!

GASでカレンダーの予定を取得する方法

GASでカレンダーから予定を取得するイメージ

1クリックするだけで当日のすべての予定をカレンダーから取得して、一目でわかりやすいように文章にして表示します。

GASを使うと、予定を簡単に一覧として表示することができます。

GASでカレンダーの予定を取得する準備

Google Apps Scriptでカレンダーのスケジュールを取得する準備をします。ファイルを2点を用意します。

必要なファイル

  • Google Apps Script ・・・ コードの入力&カレンダーを取得
  • Google カレンダー  ・・・ 当日の予定を記入

サンプルコードを貼り付ける方法

ソースコードはGoogle Apps Scriptのファイルにコピペします。

メニュー画面で右クリックし、オプションを開きます。メニュー一覧の一番下の「その他」を選択し、その中の「Google Apps Script」を選択します。

以下のような画面が現れます。ここにコードをコピペして実行します。

予定を Google カレンダー に登録

取得するカレンダーの予定を登録します。この記事では予定を2つ作成しました。

タイトルや時間などは、あなたの好きな内容で問題ありません。

しかし、あとでGoogle Apps Script にカレンダーの予定を受け取るテストを行うので当日のカレンダーに記入します。

Google カレンダーへの記入例

カレンダーの予定を取得するサンプルコード

Google Apps Scriptでカレンダーから当日の日程を取得するサンプルコードを紹介します。

解説の項目

  • サンプルコード
  • A, 日付と時間を取得
  • B, Googleカレンダーの情報を取得
  • C, 全ての予定を1つの文章につなげて出力

サンプルコード

ソースコードの全体です。右上にあるマークを押すとコードのコピペが一瞬でできます。

また、コード内で文頭にアルファベットが付いているコメントごとに、詳細を説明していきます。

function createCalendarList() {
 //A, 日付と時間を取得
  const today = new Date();
  today.setHours(00);
  today.setMinutes(00);
  today.setSeconds(00);
  const tomorrow = new Date(Date.parse(today) + (24 * 60 * 60 * 1000));
 
 //B, Googleカレンダーの情報を取得
  let events = CalendarApp.getEvents(today, tomorrow);
  let messageArray = [];//カレンダーから取得した予定を格納

 //C, 全ての予定を1つの文章につなげて出力
  for (var i in events) {
    
    //当日の予定の件数
    const addedNum = Number(i) + 1;
    const number = "\n" + addedNum + "件目";

    //予定の開始時刻
    const startHours = "0" + events[i].getStartTime().getHours();
    const startMinutes = "0" + events[i].getStartTime().getMinutes();
    const startTime = startHours.slice(-2) +":"+ startMinutes.slice(-2); //データ型から文字列に変換

    //予定の終了時刻
    const endHours = "0" + events[i].getEndTime().getHours();
    const endMinutes = "0" + events[i].getEndTime().getMinutes();
    const endTime = endHours.slice(-2) +":"+ endMinutes.slice(-2); //データ型から文字列に変換

    //場所
    let location = "\n【場所】" + events[i].getLocation();
  
    //詳細
    let description = "\n【詳細】" + events[i].getDescription();

    //取得した情報を一文にし、配列に格納
    const time = "\n【時間】" + startTime +" ~ "+ endTime;
    const title = "\n【予定】" + events[i].getTitle();
    const message = number + time + location + title + description + "\n";
    messageArray.push(message);
  }

  Logger.log(messageArray);
}

A, 日付と時間を取得

//A, 日付と時間を取得
 const today = new Date();
 today.setHours(00);
 today.setMinutes(00);
 today.setSeconds(00);
 const tomorrow = new Date(Date.parse(today) + (24 * 60 * 60 * 1000));

当日の日付 & 翌日の日付をそれぞれ取得してインスタンスを作成します。

定数 today は当日、定数 tomorrow は翌日を意味します。

当日の0時を基準に24時間後の翌日の日付の2つを用意することで、その間の時間にセットされた予定をすべて取得できます。

この記事では省略しますが、日付を設定するDateオブジェクトについての詳細は以下をご参考ください。

B, Googleカレンダーの情報を取得

 //B, Googleカレンダーの情報を取得
  let events = CalendarApp.getEvents(today, tomorrow);
  let messageArray = []; //カレンダーから取得した予定を格納

Aで定義した2つの日付を getEvents メソッドの引数に入れ、Googleカレンダーを読み取って当日分の予定を全て取得します。

変数 messageArray は、次のCで取得したカレンダーの予定を文字列の一覧として出力するときに使います。

C, 全ての予定を1つの文章につなげて出力

//C, 全ての予定を1つの文章につなげて出力
  for (var i in events) {
    
    //当日の予定の件数
    const addedNum = Number(i) + 1;
    const number = "\n" + addedNum + "件目";

    //予定の開始時刻
    const startHours = "0" + events[i].getStartTime().getHours();
    const startMinutes = "0" + events[i].getStartTime().getMinutes();
    const startTime = startHours.slice(-2) +":"+ startMinutes.slice(-2); //データ型から文字列に変換

    //予定の終了時刻
    const endHours = "0" + events[i].getEndTime().getHours();
    const endMinutes = "0" + events[i].getEndTime().getMinutes();
    const endTime = endHours.slice(-2) +":"+ endMinutes.slice(-2); //データ型から文字列に変換

    //場所
    let location = "\n【場所】" + events[i].getLocation();
  
    //詳細
    let description = "\n【詳細】" + events[i].getDescription();
  
    //取得した情報を文にして、配列に格納
    const time = "\n【時間】" + startTime +" ~ "+ endTime;
    const title = "\n【予定】" + events[i].getTitle();
    const message = number + time + location + title + description + "\n";
    messageArray.push(message);
  }

  Logger.log(messageArray);
}

取得したカレンダーの予定を1つの文字列にまとめて出力します。

for文を使って、読み取ったオブジェクト型のデータを1件ずつ取り出し、「予定の開始時刻」,「予定の終了時刻」,「場所」,「詳細」の4つの情報を取得します。

カレンダーから1つ予定を取り出した後、1つの文字列にまとめてpushメソッドmessageArray配列内に格納します。

配列に要素を追加する詳しい方法についてはこちら。

【簡単】GASで配列に要素を追加する4つの方法

続きを見る

すべての予定を取得後、まとめた文字列をログ出力します。コードの説明は以上です。

カレンダーから予定を取得するテスト

実際に、カレンダーから当日の日程を取得します。

Apps Scriptの上バーの文字が「createCalendarList」になっていたら、「実行」を押します。

「このアプリはGoogleで確認されていません」と表示される場合はこちら

【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法

続きを見る

画像のようにログ結果がでたら完了です。2つの予定を取り出すことに成功しました。

カレンダーを取得できない時の対処法

ログ出力すると、カレンダーの日付や時間がずれて表示されることがあります。

これはGoogle がアメリカの時間を標準にしているのが原因なので、標準時を日本に合わせる必要があります。

3分で解決できますのでぜひご参考ください。

【3分で解決】GASで出力した時間がずれたときにタイムゾーンを変更する方法

続きを見る

【無料】GASを使ってスケジュール管理をさらに便利に

GASを使えば予定の取得以外にも、予定を登録したり、今回紹介したコードを応用してLINEで1日のすべての予定を毎朝通知するアプリも無料で作れます。

今日1日にすべきことが一覧でわかるので非常に便利なツールです。

このサイトでは無料で便利なアプリの作り方も紹介しているので、ぜひご活用ください。

もちろん、コピペOKです!

【3分で簡単】GASでカレンダーに予定を追加する方法

続きを見る

【簡単】GASで当日のカレンダーの予定をLINEに通知

続きを見る

おわりに | GASでカレンダー操作できる

以上、Google Apps Script を使った Googleカレンダーに登録されている当日の予定一覧としてを取得する方法でした。

そのままコピペして日常業務で使いやすいように改修したり、プログラミングの練習や動作確認用に使ってみましょう。

GASでさらに業務効率化したい場合、参考書やプログラミングスクールを使うとあなた自身でアプリを作るスキルが身に付きます

プログラミング未経験者にもわかりやすく解説しています。

GASユーザーのあっきょがおすすめの勉強方法はこちら↓

次回の記事もご期待ください!

-Google Apps Script, 時短ツール
-, , , , , , , , , , , , , , , , , , , , , , , , , ,