kyoto24.life

【GAS】Googleカレンダーで時給計算をする方法

2019/12/08

こんにちは。
この記事をお読みになっていただき、ありがとうございます。

大学生などで、アルバイトをされている方は多いのではないでしょうか。
バイトをしていると気になるのは、その月収です。
みなさんは、どのように管理されていますか?

いろいろなアプリもあるようですが、

・会員登録しなければならないのが面倒
・自分のカレンダー(Googleカレンダー)以外にもシフトを入力するのが面倒
・確実に入るお金と収入の予測どっちも計算したい

と、しっかり管理しようと思うと大変です。

そこで今回は、Googleカレンダーとスプレッドシート、GAS(Google Apps Script)を使って、給与計算をする方法をご紹介したいと思います!

1.Googleカレンダーに予定を入れる

このとき、バイト専用の色を決めてください!私は赤にしています。

2.Googleスプレッドシートを開く

これから給与計算のためのシートを作っていきましょう。

まずはスプレッドシートを新しく作成し、

A1のセルに「集計期間」
A2のセルに「はじめ」
B2のセルに「おわり」
D2のセルに「推定収入」
A5のセルに「勤務予定」

と入力してください。

出来たら、画面の上の方にあるメニューから
[ツール]→[<>スクリプトエディタ]
を選んでください。

すると、新しくタブが開きます。
いよいよスクリプトを書いてみましょう。
コピペで出来るので、パソコンに自信の無い方でも大丈夫です!

3.スクリプトを書く

次のコードをコピーしてください。

function myFunction() {
      var ss_id = 'シートのURL';
      var sh_name = 'シート1';
      var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name);
      //IDを指定してカレンダーを取得
      var calendar = CalendarApp.getCalendarById('@gmail.com');
      //一度まっさらにする
      sh.getRange('A6:E999').clear();
      //対象の日付を範囲指定して予定を取得
      var begin = sh.getRange(3,1).getValue();
      var finish = sh.getRange(3,2).getValue();
      var events = calendar.getEvents(begin, finish);
      var total = 0;
      //予定を繰り返し出力する
      for(var i = 0; i < events.length; i++) {
        if (events[i].getColor() === '11'){
          var row = i + 7;
          var start = events[i].getStartTime();
          var end = events[i].getEndTime();
          //予定名を出力
          sh.getRange(row, 1).setValue(events[i].getTitle());
          //開始時間を出力
          sh.getRange(row, 2).setValue(Utilities.formatDate(start,"JST","MM/dd hh:mm"));
          //終了時間を出力
          sh.getRange(row, 3).setValue(Utilities.formatDate(end,"JST","MM/dd hh:mm"));
          //長さを出力
          sh.getRange(row, 4).setValue( ((end.getHours()*60 + end.getMinutes()) - (start.getHours()*60 + start.getMinutes())) / 60);
          //収入
          if(events[i].getTitle().match(/スタッフ/)){
            sh.getRange(row,5).setValue( (((end.getHours()*60 + end.getMinutes()) - (start.getHours()*60 + start.getMinutes())) / 60) * 900 );
            total += (((end.getHours()*60 + end.getMinutes()) - (start.getHours()*60 + start.getMinutes())) / 60) * 900;
          } else {
            sh.getRange(row,5).setValue( (((end.getHours()*60 + end.getMinutes()) - (start.getHours()*60 + start.getMinutes())) / 60) * 1300 );
            total += (((end.getHours()*60 + end.getMinutes()) - (start.getHours()*60 + start.getMinutes())) / 60) * 1300;
          }
        }
      }
      sh.getRange(3,4).setValue(total);
    }

必要に応じて書き換えましょう。

2行目
"シートのURL"の部分に先程作ったシートのURLから「https://docs.google.com/spreadsheets/d/この部分/edit」を貼り付けましょう。/は不要です。

6行目
""の中に自分のgmailのアドレスを入れてください。

16行目
1で決めた色に合わせて""の中の数字を変えてください。

色名 コード
トマト 11
ミカン 6
バナナ 5
バジル 10
セージ 2
ピーコック 7
ブルーベリー 9
ラベンダー 1
ブドウ 3
フラミンゴ 4
グラファイト 8

29行目
時給の異なるシフトがある場合は、その名前(Googleカレンダーでその名前で統一されていることが条件)を「スタッフ」の文言と置き換えてください。
1つのバイトだけなら29~32行目、35行目を削除してください。

30,31行目、33,34行目
末尾の*の後の数字「900」「1300」を自分の時給に変えてください。ひとつ目が上で入れた文言と一致するもの、ふたつ目が異なるものです。

4.完成したら

保存して、左上の矢印「→」のマークを押します。
すると「自分のプロジェクト」というリストが表示されます。
今、作ったプロジェクトを右クリックして「トリガー」を選んでください。

右下の「+ トリガーを追加」を押し、

イベントのソースを選択は「スプレッドシートから」
イベントの種類を選択は「変更時」

を選択し、保存してください。

これで完成です!
早速、使ってみましょう。

5.給与計算をする!

A5のセルに「2019/12/02」
B5のセルに「2019/12/08」
と入力します。

しばらく待つと…

出てきました!!

「勤務予定」のリストは、
イベントのタイトル、開始日時、終了日時、長さ(h)、給料
となっています。

どうでしょうか?
過去の日付を入力すれば確定した収入が、未来の日付を入力すれば収入の予測が立てられます。
年収を計算することもできますね。

ぜひ、活用してみてください!

最近の記事

【Webテスト】適性検査cubicの例題と対策まとめ

2021.3.8

大学生が読むべき本は東大の教科書! -教養の教科書が面白い-

2020.5.22

【2020前期】京大般教の教科書(人社群)

2020.3.13

人気の記事

【GAS】Googleカレンダーで時給計算をする方法

2019.12.08

大学生が読むべき本は東大の教科書! -教養の教科書が面白い-

2020.5.22

【2020前期】京大般教の教科書(人社群)

2020.3.13

記事一覧