勉強したことのメモ

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でNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法
GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法

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

GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法
GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法

Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの管理画面に ...

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

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

GASとGmailを連携させて受信メール検索及びメール送信
GASとGmailを連携させて受信メール検索及びメール送信

Google Apps ScriptとGmailを連携させてみたい。「未読かつ特 ...

GASを使ってみて感じたメリットとデメリット
GASを使ってみて感じたメリットとデメリット

Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...