バイトの給与を予測するアプリを作ろうJavaScriptGoogleCalendarGoogleAppsScriptgas私はバイト掛け持ちなう!なJK(N高等学校ネットコース4期生、プログラミングスクールNepps講師)です。ある時「今月、どのくらいお給料が入るかな?」と気になったので、Googleカレンダーに入力しているシフトから大まかな給与を計算して表示するスクリプトを書きました。GoogleスプレッドシートとGoogleカレンダーの連携方法を解説する記事です。(以下GAS)は、Googleのサービスをクラウド上でプログラムを組むことで操作できる、JavaScriptをベースとしているサービスです。今回は、GoogleカレンダーとGoogleスプレッドシートを連携させて、バイト給与をスプレッドシートに表示させるツールを作ります。任意のスプレッドシートを作り、メニューからツール→スクリプトエディタを選択してください。次のような画面が開けばOKです。保存しようとすると次のようなダイアログが出るので、好きな名前に変更して「OK」を押しましょう。//開いているスプレッドシートのシートの、'C3'に位置するセルの値を'わあ!'にする。}では、実際に実行してみましょう。「▶」というボタンをクリックします。required」というダイアログが出ますね。Google上のデータにアクセスするための許可が必要です」という意味です。Googleスプレッドシートの編集などの許可が必要なコードを書いて、初めての実行だとダイアログが表示されます。「許可を確認」を押します。許可するアカウントをクリックし次に進むと、次の画像のように「このアプリは確認されていません」というページになります。「よく知っている信頼できるデベロッパーの場合に限り続行してください。今回、このアプリを作ったのは自分自身なので、信頼できますね。ここで「詳細」をクリックします。「詳細」をクリックすると「<アプリ名>(安全ではないページ)に移動」とかかれたところがあるので、クリックします。「Googleドライブのスプレッドシート作成や編集を許可しますよ」といった内容のページになるので、確認して「許可」します。これで実行の準備が整いました。再度「▶」のボタンを押します。うまく思い通りに表示されたか、スプレッドシートを確認しましょう。次のようになっていれば成功です!書いたコードはスプレッドシートが開かれたときに実行するものなので、きちんと動いているのか確認するために、表示された「わあ!」という文字列を消して再読み込みしてみます。先程も出てきましたが、指定のセルの値を設定する方法は次のコードです。シートの左上に「左上だぴょーん」という文字列を表示したかったら、スプレッドシートのシート.getRange('A1').setValue('左上だぴょーん');というコードで表示できます。カレンダーから予定を取得するカレンダーIDの取得さて、今回のアプリではカレンダーからバイトの予定を取得します。予定を取得するときには、「カレンダーID」が必要です。カレンダーIDを調べましょう。Googleカレンダーにアクセスして、予定を取得したいカレンダーのオーバーフローメニューをクリックし、「設定と共有」をクリックします。ID」という項目があります。ほにゃららほにゃらら@group.calendar.google.comという文字列が表示されています。(ほにゃららほにゃららの部分はそれぞれ異なります)これが「カレンダーID」です。イベントとそれぞれの時間を取得する次のようなコードで、Googleカレンダーから予定を取得できます。CalendarApp.getCalendarById('ほにゃららほにゃらら@group.calendar.google.com').getEvents(予定を取得する範囲(初めの日にち,終わりの日にちという形));このコードを使って、次のような一ヶ月間の予定を取得する関数を作ります。myCal.getEvents(startDate,endDate);//受け取った日付〜受け取った日付の一ヶ月後の予定を取得して渡す}次に、特定の名前の予定(CalendarEventObject)が合計で何時間なのかを調べる関数を作ります。こんな技を組み合わせます。//足し合わせ終わった変数を返り値として渡す}これで、特定の予定が月にどれくらいの時間入っているのか、知ることができました。2019/12/16追記:masciiさんより、次のようなコメントを頂きました。_)mとてもわかりやすい記事を書いてくださり、ありがとうございます。文が推奨されています。́)スプレッドシートで表示する勤務時間(予定の時間)をスプレッドシートで表示します。onOpen()関数を次のように変更します。🍔、💻となっている部分は任意の文字列に変更してください。私の場合はバイト先1は🍔、バイト先2は💻というタイトルの予定として登録しているので、このようなコードになっています。//「今月1日」から一ヶ月間の"💻"というタイトルの予定が入っている時間をスプレッドシートのD3に表示}動くか確認します。「▶」ボタンを押して実行します。すると、先程と同じダイアログが表示されます。これは新しく「カレンダーを操作するコード」を書いたからですね。前述の手順にそって許可してもう一度実行してみましょう。次のように表示されれば成功です!コードはこれで完成です。コード全体は次のような感じになっています。//足し合わせ終わった変数を返り値として渡す}取得した予定から給与を計算するさて、どのくらい働いているかはわかりましたが、このままでは給与の計算が面倒ですね。自動で計算をしましょう。コードを書く方法もありますが、単純な計算で可変でもないので、スプレッドシートで計算させたほうが早いです。任意のセルに=C3(先程表示させた働く時間のセルの位置)*時給と入力しましょう。時給でおおよそのもらえる給与がわかるようになりました。これで、働いた時間ともらえると予想される給与がわかるようになりました。見た目を整えて完成!このままだと「なんの数字だ?」となってしまうので、お好みで見た目を整えます。した時にスプレッドシートを開くだけの給与予測ツールができました。おわりに今回はごく簡単なものを作りましたが、アレンジを加えて「先月と今月の比較」や「有給・休日の計算」を実装することもできます。upLoginユーザーは見つかりませんでした。