プログラミング初心者が【Googleスプレッドシートで勤務管理表】を作った話

プログラミング学習記録

妻から「勤務時間と休憩時間をはかれる表を作ってほしい」と頼まれて、Googleスプレッドシートで作ってみました。

プログラミングはまだ初心者ですが、ChatGPTに相談しながら、シンプルな勤務管理表を1週間かからずに完成させました。

この記事では、

  • どうやって作ったか
  • できること(開始・休憩開始・休憩終了・終了の記録)
  • つまずいた時の乗り越え方(スクショ→相談で解決)

を、スクショと短いコードで紹介します。

「まずは小さく作ってみる」が、学びをぐっと楽しくしてくれました。

左:ログ(イベント履歴) 右:勤務タイマー画面

1. 使ったもの

  • Google アカウント
  • Google スプレッドシート
  • Apps Script(スプレッドシート内でコードを書くところ)
  • ChatGPT(設計やエラー相談に活用)

Apps Script を開く手順

スプレッドシートを作成 → 上のメニュー「拡張機能」→「Apps Script」をクリック。

2. できたこと(今回の機能)

  • 勤務開始:ボタン(メニュー)で開始時刻を記録
  • 休憩開始:勤務カウントを一時停止し、休憩を記録
  • 休憩終了:休憩を止めて、勤務を再開
  • 勤務終了:終了時刻を記録し、合計を出せるようにする(合計はシートの数式で計算)

下のコードは短い抜粋です。

function startWork(payload) {
  return appendLog(payload.user, payload.client, 'WORK_START', payload.sessionId);
}

(2)休憩開始

function startBreak(payload) {
  return appendLog(payload.user, payload.client, 'BREAK_START', payload.sessionId);
}

(3)休憩終了

function endBreak(payload) {
  return appendLog(payload.user, payload.client, 'BREAK_END', payload.sessionId);
}

(4)勤務終了

function endWork(payload) {
  const res = appendLog(payload.user, payload.client, 'WORK_END', payload.sessionId);
  recomputeSummaryFor(payload.user || '', payload.client || '', formatYMD(new Date()));
  return res;
}

3. 作り方の流れ

  1. まず置き場所を決める

     どのセルに「開始・休憩開始・休憩終了・終了・合計」を入れるか決めます。
  2. 一つずつ動きを作る

    「開始を押したら時刻を入れる」など、やりたい動きを小さく分けて関数を作ります。
  3. メニューから実行できるようにする

    図形ボタンは使わず、Apps Script の onOpen() で上のバーに自分用メニューを出しました。
function onOpen() {

  SpreadsheetApp.getUi()

    .createMenu('勤務管理')         // メニュー名

    .addItem('勤務開始', 'startWork')

    .addItem('休憩開始', 'startBreak')

    .addItem('休憩終了', 'endBreak')

    .addItem('勤務終了', 'endWork')

    .addToUi();

}
  1. 見た目と合計を整える

    合計の出し方や時間の表示(例:[h]:mm)は、シートの「表示形式」で整えます。

4. 集計の入れ方(数式の例)

今回は、合計時間の計算はシートの数式で行いました。わかりやすい例を2つだけ紹介します。

  • 勤務時間の合計(F2)

    「終了−開始」から「休憩の長さ」を引きます。
  • 表示形式の設定
    合計時間のセルを選び、
    「表示形式」→「数字」→「カスタム数値形式」→ [h]:mm と入力すると、時間として見やすく表示されます。

5. つまずいたときは

  • エラーの意味が分からない

    → 画面をスクショしてChatGPTに相談。実行ログも一緒に見ると伝わりやすいです。
  • 長く書いたら動かなくなった

    → いったん分解。短い関数に分けて、一つずつ動かして確認。
  • 時間の表示が思った通りにならない

    → シート側の表示形式を変える(「時刻」と「経過時間」は別もの、と考えると整理できます)。

何度も何度もスクショをチャットGPTに見せたね
何十枚撮ったか分からない

エラーが出ても何度でもやり直せばいつ完成するね。

6. やってよかったこと

  • 学習だけでは分かりませんでしたが、プログラミングが実際に動いてることが実感できました。
  • 身近な人に使ってもらえると、続ける力になります。
  • Progateの復習が体感でスムーズになりました。

まとめ

プログラミング初心者でも、学びの途中で小さな実用品を作ってみることには大きな意味があります。

「Progateでインプット → 小さなアプリでアウトプット → またインプット」。

このくり返しで理解が着実に深まりました。いまはAIも使えます。完璧じゃなくて大丈夫。まずは手を動かして形にしてみる――それだけで、達成感と楽しさがしっかり残りました。

コメント

タイトルとURLをコピーしました