見出し画像

カレンダーのイベントを書き出すGAS

さぁ!早速、今日もファムテックな時間のスタートです!

管理者のみなさま、こんなこと考えたことありませんか?

”なんだか作業効率が悪い気がするけど、だれが、何に、どれくらいの時間を使っているかわからない・・・”

まさしく、弊社がそうでした。笑

ということで、困ったらGAS!!早速調べてみると、カレンダーの予定を抽出する方法があったので挑戦してみました。

カレンダーの予定を書き出す

今回使用したコードはこれです。

calendarIdには、この予定を反映したいgoogleカレンダーからIDを取得してあてはめてください。

function getCalendarEvents() {
 const calendar = CalendarApp.getCalendarById(calendarId);
 
 const ss = SpreadsheetApp.getActiveSpreadsheet();
 const sheet = ss.getActiveSheet();
 
 const startTime = new Date();
 startTime.setMonth(startTime.getMonth()-1)
 const endTime =  new Date();
 const events = calendar.getEvents(startTime, endTime);
 
 const values = [];
 
 //見出し行に追加
 values.push(["タイトル","開始日","開始時間","終了日","終了時間","対応時間(H)","カラーナンバー"]);//データタイトル
 
 
 for(const event of events){
   const startTime = event.getStartTime();
   const UTstartDay = Utilities.formatDate(startTime, "JST","yyyy/MM/dd (E)");
   const UTstartTime = Utilities.formatDate(startTime, "JST","HH:mm");
   const endTime = event.getEndTime();
   const UTendDay = Utilities.formatDate(endTime, "JST","yyyy/MM/dd (E)");
   const UTendTime = Utilities.formatDate(endTime, "JST","HH:mm");
   const correspondenceTime = (endTime.getTime()-startTime.getTime())/(60*60*1000); //getTimeで差分(S)とって時間(H)に変換
   
   
   const record = [
     event.getTitle(),
     UTstartDay,
     UTstartTime,
     UTendDay,
     UTendTime,
     correspondenceTime,
     event.getColor()
   ];
   values.push(record);
 }
 sheet.getRange(1,1,values.length,values[0].length).setValues(values);
}

ポイントとしては、予定のカラーを取得しているところです。

これを行った理由は、対応者を色分けでカレンダーに記録していたため、だれが、何に、どれくらいの時間を使っているか においてカラーの取得が有用だったからです。この場合、色によって割り当てられている数字を取得することができます。

取得した時間から、期間中に誰がどれくらい時間を使っていたのか集計をする

分類(カラーに割り当てられた数字)ができています。こういった時の集計に使用するのは SUMIF関数 が便利です。

今回のコードには、対応時間の差分が取得できるようになっています。

const correspondenceTime = (endTime.getTime()-startTime.getTime())/(60*60*1000); //getTimeで差分(S)とって時間(H)に変換

対応している時間が6列目に書出されますので、そちらと7列目のカラーナンバーに対応したSUMIF関数をセットすることで分類ごとの総和が可能です。

是非、業務効率化の分析にお役立てくださいね(^^)/

おわりに

いかがでしょうか?意外と簡単だと感じたのではないでしょうか?

引き続き、薬局の業務効率に役立つGASの使い方を紹介していきます。当ブログをよろしくお願いします!


この記事が気に入ったらサポートをしてみませんか?