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で祝日一覧(年月日と祝日名)データを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」と連携させて ...