SkillStack Lab(スキスタ) 運営者の「スタック」です。
従業員の出退勤を管理するにあたり、なるべくコストをかけずにシステム化したいと考える経営者や管理部門の方からよくご相談を受けます。
そこで候補に挙がるのが、普段業務で使い慣れているツールを活用したスプレッドシートの勤怠管理ボタンの作り方に関する情報です。
たしかに、従来のExcelにおけるマクロのような仕組みをGoogle Apps Script(GAS)というスクリプトで代用すれば、ワンクリックで時刻を記録する機能を無料で自作することができます。
しかし、実際に運用を始めてみると、スマホからボタンが押せないという問題や、複雑な残業計算を正確に処理しなければならない課題に直面します。
さらには、手入力によるデータ改ざんのリスクや、法律に準拠した運用を維持するための管理工数など、自作システムならではのデメリットや限界も見えてきます。
最終的には、こうした課題を解決するために、スマホ打刻に標準対応している専用のクラウドシステムへの移行や、まずは無料トライアルを活用して専用ツールの利便性を体感するという選択肢に行き着くケースがほとんどです。
本記事では、コストゼロで始められる自作の仕組みから、その後に必ず直面する運用上の壁、そして最適な解決策に至るまで、現場のリアルな視点で解説していきます。
- GASを活用したスプレッドシートでの打刻ボタン作成手順と仕組み
- スマホ運用時の操作課題と現場で使える代替のシステム構成案
- 自作システムに潜むデータ改ざんリスクや法的コンプライアンスの壁
- 運用負荷を劇的に下げるクラウド勤怠管理システムへの移行判断基準

スプレッドシートで勤怠管理ボタンを作る方法
小規模なプロジェクトチームや創業間もないスタートアップであれば、まずは初期費用ゼロで打刻の仕組みを構築したいと考えるのは当然のアプローチですね。

ここでは、スプレッドシート上に実際に打刻ボタンを配置し、クリック一つで現在時刻を記録させるための具体的な技術仕様や、運用に乗せるための設計手法について詳しく解説していきます。
現場でそのまま使えるテクニックをまとめていますので、ぜひ参考にしてみてください。
GASを用いたワンクリック打刻の作り方
スプレッドシート上に「出勤」や「退勤」といったボタンを配置し、それをクリックした瞬間に時刻を記録させるためには、Googleが提供しているサーバーサイドスクリプト環境である「GAS(Google Apps Script)」の活用が欠かせません。
標準の関数だけで現在時刻を入力しようとすると、NOW関数などの揮発性関数を使うことになり、シートを開き直すたびに過去の打刻時刻まで最新の時刻に更新されてしまうという致命的な問題が起こります。
これを防ぎ、「ボタンを押した瞬間の時刻を静的なデータとしてセルに固定する」のがGASの役割です。
ボタン配置とスクリプトの紐付け手順
具体的な作り方としては、まずスプレッドシートの上部メニューから「挿入」>「描画」を選択し、図形やテキストボックスを組み合わせて見た目上のボタンを作成してシート上に配置します。
その後、拡張機能からApps Scriptのエディタを開き、現在のアクティブなシートを取得して指定のセルに現在時刻(new Date())を書き込むシンプルな関数を記述します。
最後に、シート上に配置した図形を右クリックして「スクリプトを割り当て」を選択し、作成した関数名を入力することで、グラフィカルなワンクリック打刻ボタンが完成します。
元情シスの視点から見ても、この一連の作業はプログラミングの深い知識がなくても実現できるため、スモールスタートの第一歩としては非常に優秀な手段かなと思います。まずはこの基礎的な動きを理解することが、自動化への近道ですね。

スクリプトによる自動タイムスタンプ機能
ボタンをクリックしてスクリプトを呼び出した後、裏側でどのようにタイムスタンプが処理されているのか、もう少し解像度を上げてお話しします。
単に「A1セルに時刻を書き込む」だけのスクリプトでは、毎日の勤怠記録としては使い物になりませんよね。
実運用に耐えうるスクリプトにするためには、「今日の日付」と一致する行を自動的に検索し、その行の出勤列あるいは退勤列にピンポイントで時刻を書き込むという動的なロジックが必要です。
実運用に耐える動的ロジックの構築
具体的には、GAS内でシートの全データを二次元配列として取得し、ループ処理等で本日の日付と合致する行番号(インデックス)を特定します。
行が特定できたら、対象となる列に対してsheet.getRange(row, column).setValue(new Date())といったメソッドを実行し、正確なタイムスタンプを流し込みます。
さらに、出勤の打刻がすでに存在している場合は上書きを防ぐための条件分岐を追加したり、退勤打刻の際には出勤時刻との整合性をチェックするロジックを組み込むことで、より堅牢な自動タイムスタンプ機能を構築することができます。
GASを用いた時刻記録は、サーバー側の時計を参照するため、従業員がPCのローカル時刻を意図的にずらしても、正確な日本標準時での打刻が可能になります。これは不正防止の観点でも非常に重要な仕様です。
従来のExcelマクロと異なる仕様の注意
社内システムを構築する際、以前からExcelのVBA(マクロ)に慣れ親しんでいる方も多いと思いますが、スプレッドシートのGAS環境で運用を始めるにあたっては、クラウド特有の仕様の違いに注意が必要です。
Excelのマクロはローカル環境で動くため比較的自由にファイルの操作が可能ですが、Googleのクラウド上で動くGASはセキュリティ要件が格段に厳しくなっています。
初回アクセス時の「承認が必要です」の壁
特に、作成した打刻ボタンを従業員が初めてクリックした際に必ず立ちはだかるのが、「初回実行時のアクセス承認(認証プロセス)」という壁です。

GASが組み込まれたシートでボタンを初めて押すと、「承認が必要です」というダイアログが表示され、続いて「このアプリはGoogleで確認されていません」という、いかにも危険を知らせるような警告画面が出現します。
これは、スクリプトがスプレッドシートの編集権限にアクセスすることに対する標準的なセキュリティ仕様なのですが、ITに不慣れな従業員はここで「安全なページに戻る」を押してしまい、「ボタンが壊れています!」と問い合わせてくるケースが後を絶ちません。
この警告画面は、詳細リンクから「安全ではないページへ移動」を選択し、権限を許可することで突破できます。一度許可すれば次回以降は表示されません。システムを全社展開する前に、必ずこの手順をマニュアル化して従業員に周知しておく必要があります。
スマホから簡単に打刻させるための代替案
自作の打刻システムを運用し始めて、最も早い段階で直面する致命的な壁が「スマホ環境での操作性」です。
先ほど解説した「図形描画で作ったボタンにスクリプトを割り当てる」という手法は、実はPCのブラウザ環境でしか動作しません。iOSやAndroidのGoogleスプレッドシート公式アプリからシートを開き、その図形をいくらタップしても、ウンともスンとも言わないのです。
営業担当者や店舗スタッフなど、スマホからの打刻が必須の現場では、この仕様が運用上の大きなボトルネックとなります。
スマホ向けにUIを最適化する2つのアプローチ
これを解決するための代替案として、現場でよく採用される手法がいくつかあります。
一つ目は、スプレッドシート標準の「チェックボックス」機能とGASのonEditトリガー(シートが編集された瞬間に動く処理)を組み合わせる方法です。スマホからチェックボックスをタップして「TRUE」になった瞬間に、隣のセルに時刻を書き込む処理を裏側で走らせます。
二つ目は、極限までシンプルな「Googleフォーム」を出退勤の入力用インターフェースとして用意し、フォームの送信データをGASでスプレッドシートの勤怠表に自動転記するアーキテクチャです。
スマホからの入力の手軽さとデータの安全性を考慮すると、元情シスの私としては後者のGoogleフォーム連携が最も現実的でトラブルが少ない構成かなと思います。
複雑な残業計算を自動化する数式の組み方
打刻の仕組みが整ったら、次は集まったタイムスタンプをもとに労働時間を算出する数式を組む必要があります。
スプレッドシートで勤怠管理を行う場合、単に「退勤時刻から出勤時刻と休憩時間を引き算する」だけの計算では到底実務に対応できません。なぜなら、シフト制や夜勤などによる「日またぎ勤務」が必ず発生するからです。
日またぎ勤務と深夜残業の計算ロジック
例えば、22時に出勤して翌朝6時に退勤した場合、シリアル値(時間データ)の計算上、退勤時刻の方が出勤時刻よりも小さくなるため、そのまま引き算をするとエラーや負の数値になってしまいます。
これを回避するためには、IF関数を用いた論理式の構築が必須です。退勤時刻が出勤時刻を下回っている場合は、退勤時刻に24時間(数値の1)を加算してから計算するという条件分岐を組み込みます。
さらに、労働基準法に則り、1日の労働時間が8時間を超えた部分を「普通残業時間」、深夜22時から翌5時までの労働を「深夜残業時間」として個別に抽出・集計する複雑な関数群を設計しなければなりません。
こうした複雑な残業計算の数式メンテナンスは担当者に依存しやすく、管理部門の大きな負担になりがちです。

スプレッドシート勤怠管理ボタンの限界と対策
ここまでは自作システムを構築する楽しさや技術的なアプローチについて解説してきましたが、組織の規模が10名、20名と拡大していくにつれ、手作りのシステムは必ず限界を迎えます。
ここからは、管理部門長として絶対に避けては通れないコンプライアンスのリスクや運用上の負の側面、そして本来あるべき対策についてお伝えします。
シート保護でも防げない改ざんの危険性
労働基準監督署が推奨する勤怠管理は、「客観的な記録」に基づいていることが大前提です。
しかし、スプレッドシートで打刻システムを自作した場合、その客観性を担保するのが構造上非常に難しいという弱点があります。
打刻ボタンを使ってセルに時刻を書き込むためには、当然ながらその従業員自身に対してシートの「編集権限」を付与しなければなりません。これはつまり、打刻した後のセルを手動でいくらでも書き換えられてしまう状態を意味します。

動的ロックの難しさと客観性の喪失
スプレッドシートには「シートと範囲の保護」という機能があり、特定のセルや列をロックすることは可能です。
しかし、「自分自身が打刻するセル」を事前にロックしてしまうと、今度はGASからの書き込み自体が権限エラーで弾かれてしまいます。
高度なスクリプトを組んで、打刻された瞬間にそのセルに保護をかけていくような動的ロック処理を実装することも技術的には可能ですが、複数人が同時にアクセスすると処理の遅延や競合によるエラーが頻発し、実用的とは言えません。
結果として、意図的な過少申告(サービス残業の隠蔽)や過大申告などの改ざんをシステム的に完全に防ぐことは不可能に近いのです。
法的要件を満たせない自作システムの限界
勤怠管理において最も神経を使うべきは、労働基準法をはじめとする各種法令への遵守です。
特に厳しいのが「労働時間の端数処理」に関するルールです。給与計算を楽にするために、日々の出退勤時刻を「15分単位」や「30分単位」に丸める(切り捨てる)ような計算式をスプレッドシートに組み込んでいる企業を見かけますが、これは労働基準法違反(賃金全額払いの原則違反)となるリスクが極めて高い危険な運用です。
1分単位の計算原則と法令遵守の壁
労働時間は原則として「1分単位」で正確に計算し、1分残らず賃金を支払う義務があります。(出典:厚生労働省『労働時間の適正な把握のために使用者が講ずべき措置に関するガイドライン』)(※月次の合計時間に対してのみ、30分未満の切り捨てが例外的に認められるケースはあります)。
このような法改正や複雑な労務要件に対し、スプレッドシートの関数だけで完璧な計算ロジックを維持し続けるのは至難の業です。
法改正のたびに情シス担当者がシートを改修し、過去のデータに影響が出ないようテストを繰り返す……といった状況は、企業にとって目に見えない技術的負債となります。これが自作システムの最大の限界と言えるでしょう。
本記事で解説している端数処理や労働基準法に関する見解は一般的な目安であり、企業ごとの就業規則や変形労働時間制の適用状況によって解釈が異なる場合があります。システムの仕様決定や最終的な法的判断については、必ず社会保険労務士などの専門家にご相談のうえ進めてください。
担当者の負担が増加する運用デメリット
スプレッドシートでの勤怠管理は、初期構築こそ費用がかかりませんが、ランニングコストとしての「見えない人件費」が膨大に発生します。
従業員が打刻を忘れた場合の修正対応、誤って計算式の入ったセルを削除してしまった際の復旧作業、そして毎月末に発生する次月用シートの作成や過去データのアーカイブ作業など、名もなき運用業務が担当者に重くのしかかります。

属人化のリスクと見えないコスト
特に恐ろしいのは、これらのシステム管理が特定の担当者(多くの場合、情シスや総務のITに明るい社員)に完全に「属人化」してしまうことです。
その担当者が退職や休職をしてしまった瞬間、誰も計算ロジックを理解できなくなり、給与計算の根幹である勤怠データがブラックボックス化してしまいます。
ツール自体の利用料が無料であっても、こうしたトラブル対応やメンテナンスに費やす担当者の時間を時給換算すれば、決して「コストゼロ」とは言えないのが現場の現実です。
【朗報】自作スキルは「定額制(サブスク)」で学ぶのが常識
全社展開する前に、担当者自身が体系的にマスターしておくことが属人化を防ぐ近道です。GASやスプレッドシートの関数など、関連する複数スキルを1つずつ単発で買うより、Udemyの定額制プランでまとめて学ぶ方が圧倒的にお得です。
\ 必要なITスキルを月額サブスクで学び放題 /
クラウドシステムの無料トライアルを活用
では、これらの限界やデメリットをどう乗り越えるべきか。元情シスとしての結論は明確です。

スプレッドシートによる自作はあくまで「要件定義のためのスモールスタート」と割り切り、早々に専用のクラウド勤怠管理システムへ移行することが最もコストパフォーマンスが高い解決策です。
専用システムの利便性とコスパの良さ
現在、「Relix勤怠」などをはじめとする多くのSaaS型クラウドシステムは、初期費用ゼロ、1ユーザーあたり月額数百円という非常に安価な価格設定で提供されています。
これらのシステムは、スマホからのGPS連動打刻に標準対応しているだけでなく、労働基準法に準拠した1分単位の残業計算や、クラウドならではの有給休暇の管理機能、さらには打刻データの改ざん防止(操作ログの保存)といった、企業が守るべきガバナンス要件を最初から全て満たしています。
多くのクラウドシステムが1ヶ月程度の無料トライアル期間を設けているため、まずは自社の勤務体系に合うかどうか、実際の操作感を現場の従業員に試してもらうことを強くお勧めします。
「見えない人件費」を今すぐ削減しませんか?
打刻の不具合対応や月末の集計作業に追われているなら、専用システムを試すサインです。「Relix勤怠」ならスマホ打刻や複雑な残業計算に標準対応しています。
\ 30日間フル機能が無料で試せる! /
| 比較項目 | スプレッドシート自作(GAS) | クラウド勤怠管理システム |
|---|---|---|
| 導入費用・月額 | 基本無料(担当者の人件費は発生) | 初期無料・月額数百円/人〜 |
| スマホ打刻 | 標準では困難(代替策の構築が必要) | 専用アプリやブラウザで標準対応 |
| 改ざん防止 | 困難(権限設定の限界あり) | 強固(打刻後の修正は承認フロー等で対応) |
| 法改正への対応 | 自社で都度ロジックを改修 | ベンダー側で自動アップデート |

スプレッドシート勤怠管理ボタンの限界総括
最後に、これまでの内容をまとめます。
スプレッドシートにGASを利用して勤怠管理ボタンを構築する手法は、コストをかけずに現場のIT化を推進する第一歩としては非常に魅力的です。技術的な知見を深めるきっかけにもなり、数名のプロジェクト単位であれば十分に機能するでしょう。
しかし、企業として従業員を雇用し、正確な給与計算と労務コンプライアンスの遵守が求められる環境においては、必ず運用面での限界に直面します。
スマホ操作の不便さ、意図せぬ数式の破壊、防ぎきれない改ざんリスク、そして複雑な残業計算ルールのメンテナンス。これらすべてを自社の担当者だけで抱え込むのは、長期的な視点で見ると企業にとって大きなリスクとなります。
「スプレッドシートの勤怠管理ボタン」を自作して得られた現場の課題感や要件をベースにして、最終的には法的要件を網羅したクラウドシステムへとステップアップすることが、企業を守り、管理部門の疲弊を防ぐための最良のロードマップなのかなと思います。
【徹底比較】自社に最適なクラウド勤怠システムはどれ?
「専用システムが良いのは分かったけど、具体的にどのツールを選べばいいの?」と迷われる方に向けて、当サイトのキラーページとして主要なクラウド勤怠管理システムを徹底比較した記事をご用意しています。
\ 失敗しないシステムの選び方を完全解説 /
