勉強したことのメモ

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で祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成

PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...

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

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

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

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

GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法

Googleドライブに保存した画像やPDFファイルをOCR処理し、ファイル内のテ ...

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

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