勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

GASでGoogleカレンダーと連携してイベントの取得・追加・削除

  Google Apps Script Google

Google Apps Scriptの勉強としてGoogleカレンダーと連携させ、登録されているイベントの取得・追加・削除を行いたい。また、JavaScriptで日付関連の処理をする際に、PHPよりも何かと面倒なのでライブラリで対応したい。以下に対応方法のメモ。

 

ライブラリの追加

「Day.js」というライブラリが良いらしい。以下スクリプトIDで追加する。

1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC_aCZn9lFB

以下がリファレンス。

https://day.js.org/docs/en/parse/now

 

ソース

イベントの取得

//イベントの取得
function getCalendar(){

	//ユーザのデフォルトカレンダーを取得
	const calendar = CalendarApp.getDefaultCalendar();

	//何日分のデータを取得するか
	const count = 30;

	//開始年月日
	const start = dayjs.dayjs().toDate();

	//終了年月日
	const end = dayjs.dayjs().add(count, 'd').toDate();

	//カレンダーに登録されているイベントを取得
	const events = calendar.getEvents(start, end);

	//1行ずつ出力
	for(let event of events){

		let tmp = '';

		//日付
		tmp += '日付:' + dayjs.dayjs(event.getStartTime()).format('YYYY-MM-DD');

		//タイトル
		tmp += ' | タイトル:' + event.getTitle();

		//詳細
		tmp += ' | 詳細:' + event.getDescription();

		console.log(tmp);

	}
}

 

イベントの追加

//イベントの追加
function setCalendar(){

	//ユーザのデフォルトカレンダーを取得
	const calendar = CalendarApp.getDefaultCalendar();

	//タイトル
	const title = 'イベントタイトル';

	//開始日時
	const start = dayjs.dayjs().toDate();

	//終了日時
	const end = dayjs.dayjs().toDate();

	const option = {
		//詳細
		description : "イベント詳細\n改行\nイベント詳細", 
	};

	//時間指定で追加する場合
	calendar.createEvent(title, start, end, option);

	//終日指定で追加する場合
	const date = dayjs.dayjs().toDate();
	calendar.createAllDayEvent(title, date, option);
}

「○月○日14~16時」のように時間指定をする場合は「calendar.createEvent」を、終日指定の場合は「calendar.createAllDayEvent」でイベント追加する。

 

イベントの削除

//イベントの削除
function deleteCalendar(){

	//ユーザのデフォルトカレンダーを取得
	const calendar = CalendarApp.getDefaultCalendar();

	//何日分のデータを取得するか
	const count = 30;

	//開始年月日
	const start = dayjs.dayjs().toDate();

	//終了年月日
	const end = dayjs.dayjs().add(count, 'd').toDate();

	//カレンダーに登録されているイベントを取得
	const events = calendar.getEvents(start, end);

	//1行ずつ出力
	for(let event of events){

		let title = event.getTitle();

		//タイトルに「test」を含む場合は削除
		if( title.indexOf('test') >= 0 ){
			event.deleteEvent();
		}

	}

}

「event.deleteEvent」関数には引数が指定できない模様。なので「タイトルが○○の場合」や「イベントラベルの色が○○の場合」等、条件分岐で削除する形になりそう。

 

所感

カレンダーとの連携よりも日付処理であったり、日付形式の指定が非常に面倒だった。ここら辺はもうちょっと慣れていかないといけないかも。

 - Google Apps Script Google

  関連記事

GASとLINEを連携させて通知メッセージを送る方法のメモ
GASとLINEを連携させて通知メッセージを送る方法のメモ

Google Apps ScriptとLINEを連携させ、LINEに何らかの通知 ...

GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存
GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存

Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載 ...

GASのプログラム実行時間計測方法と各種制限についてのメモ
GASのプログラム実行時間計測方法と各種制限についてのメモ

PHP等でプログラムを組んでいると、あまり実行時間について気にすることはなかった ...

GASを利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法
GASを利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法

WordPressのContact Form7から送信した内容をGmailで受け ...

GASとChatworkを連携してメッセージを送信する方法
GASとChatworkを連携してメッセージを送信する方法

Google Apps Scriptの勉強として「Chatwork」と連携させて ...