Google Apps Script(GAS)でカレンダーの取得から登録まで


概要

GASでカレンダーを取得、登録してみます。

GASでカレンダーを取得

GASでカレンダーを取得するには、カレンダーの取得 → イベントの取得という流れを取ります。
カレンダーを取得するにはgetCalendarById()またはgetCalendarsByName()があり、
自分のカレンダーを取得する場合はIDで取得、その他の場合はNameで取得が楽かと思います。


自分のカレンダーを取得

自分のカレンダーを取得する際は、CalendarApp.getCalendarById('自分のメールアドレス')が一番簡単です。

var cal = CalendarApp.getCalendarById('自分のメールアドレス');
var date = new Date();
// 明日の予定を取得する場合は以下をコメントアウト
// var date.setDate(date.getDate() + 1);
var events = cal.getEventsForDay(date);
Logger.log(events[0].getTitle());

共有カレンダーの取得

自分の予定以外を取得する際は、カレンダーの名前またはIDを指定する必要があります。
カレンダーのIDは、カレンダーの設定ページの中段にカレンダーIDがあるので、そこで取得することができます。

IDを取得したら後は同じ流れ。以下に参考コードを示します。

カレンダーをIDや名前からゲット
var cal = CalendarApp.getCalendarById("カレンダーID");
// カレンダー名で取得する場合は以下 配列でゲットするので、[0]を忘れないように!! 
// var cal = CalendarApp.getCalendarsByName("カレンダー名")[0];
var date = new Date();
// 明日の予定を取得する場合は以下をコメントアウト
// var date.setDate(date.getDate() + 1);
var events = cal.getEventsForDay(date);
Logger.log(events[0].getTitle());

イベントの取得(時刻・タイトルの取得)

公式リファレンス: CalendarEvent

以下のものが取得できます。

関数帰ってくるもの
getStartTime()開始時刻
getColor()カレンダーの色
getCreators()作成者
getDateCreated()作成日時
getDescription()解説
getEmailReminders()リマインドが流れる日時
getEndTime()終了時刻
getGuestByEmail(email)ゲストオブジェクト
getGuestList()ゲストオブジェクトの配列
getId()イベントID
getLastUpdated()イベントの最終更新日時
getLocation()場所
getPopupReminders()リマインドが流れる日時
getSmsReminders()リマインドが流れる日時
getStartTime()開始時刻
getTag(key)タグ
getTitle()イベントの名前
getVisibility()イベントが視えるかどうかを表示

ここでは、参加者全員のメールアドレス、イベントの名前、開始時刻と終了時刻を取得し、リマインドメールを送ってみます。

get_and_remind_event.js
// カレンダーの取得
var cal = CalendarApp.getCalendarById("カレンダーID");
var date = new Date();

// イベントの取得 → 色々と取得
// 実際は event_nameでフィルタリングをかける、等のことをしてください。
var event = cal.getEventsForDay(date)[0];
var event_name = event.getTitle();
var start_time = event.getStartTime();
var end_time = event.getEndTime();

var guests = event.getGuestList();
var guest_names = [];
var guest_emails = [];
for each(var guest in guests) {
  guest_names.push(guest.getName());
  guest_emails.push(guest.getEmail());
}

// メールの中身を作成する
var mail_title = "リマインドメール(" + event_name + ")"
var mail_content = 
"リマインドです。\n" + 
"会議名: " + event_name + "\n" + 
"参加者: " + guest_names.join(", ") + "\n" + 
"開始日時: " + start_time + "\n" + 
"終了日時: " + end_time + "\n"

// メール送信
MailApp.sendEmail(
  guest_emails,
  mail_title,
  mail_content,
);

※ メールの送信部分に関しては、GASでメールを送信する、等を参照されたし。

以下を適当な関数の中に突っ込んで実施すると、以下のようにリマインドメールが送られます。

今回は以上です。

参考サイト

公式ページ(MailApp) 公式ページ(Calendar-app)