GASで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」関数には引数が指定できない模様。なので「タイトルが○○の場合」や「イベントラベルの色が○○の場合」等、条件分岐で削除する形になりそう。
所感
カレンダーとの連携よりも日付処理であったり、日付形式の指定が非常に面倒だった。ここら辺はもうちょっと慣れていかないといけないかも。
関連記事
- 
					
													  
- 
					GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載 ... 
- 
					
													  
- 
					GASで「小説家になろう」サイトの更新通知をLINEに送る方法Google Apps Scriptの勉強として「小説家になろう」サイトの特定小 ... 
- 
					
													  
- 
					GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの管理画面に ... 
- 
					
													  
- 
					GASで特定サイトにログインした後にスクレイピングを行う方法Google Apps Scriptの勉強として特定サイトにログインし、その後に ... 
- 
					
													  
- 
					GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...