勉強したことのメモ

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

  関連記事

GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法
GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法

GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...

GASで「小説家になろう」サイトの更新通知をLINEに送る方法
GASで「小説家になろう」サイトの更新通知をLINEに送る方法

Google Apps Scriptの勉強として「小説家になろう」サイトの特定小 ...

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

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

GASとGoogleカレンダを連携し暦通りではない店休日を取得する方法
GASとGoogleカレンダを連携し暦通りではない店休日を取得する方法

小売店等のサイトで営業日カレンダーみたいなものを表示させる際に今まではPHPで管 ...

GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法
GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法

Google Apps Scriptを利用してNintendo Storeをスク ...