カレンダーのイベントを書き出す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の使い方を紹介していきます。当ブログをよろしくお願いします!