勉強したことのメモ

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に送る方法

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

GASで特定サイトにログインした後にスクレイピングを行う方法

Google Apps Scriptの勉強として特定サイトにログインし、その後に ...

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

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

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

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

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

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