LINEに「出勤」と送ると打刻され、「退勤」と送ると退勤が記録される。打ち忘れたら「昨日の退勤、18時に直して」と普通の言葉で送れば、AIが中身を読み取って管理者に修正申請を回してくれる。
そんな勤怠打刻のBotを、少人数の製造業の会社様向けに作りました。2026年4月から本番で動かしていて、7月半ばの時点で打刻の記録はおよそ300件になりました。部品はLINE公式アカウント、GAS(Google Apps Script)、Googleスプレッドシート、Gemini(GoogleのAI)の4つだけで、毎月の利用料はかからない構成です。
「LINE 勤怠 GAS」で検索すると、作り方の記事はたくさん見つかります。ただ、実際に社員の方に使ってもらうと、作り方の記事には書かれていない罠がいくつも出てきました。とくに、AIに勤怠をどこまで任せていいのか、という線引きです。
この記事では、全体の構成、AIに任せた範囲と任せなかった範囲、そして動かしてみて分かった4つの罠を順に書いていきます。自社で勤怠打刻を自作しようとしている方、社内でGASを書いている方に向けた内容です。
LINE勤怠打刻Botの全体構成:4つの部品と、お金がかからない理由
工場の休憩所のテーブルで、作業着の二人がスマートフォンを手にくつろいで話している様子
まず全体の流れです。
社員のLINE → LINE公式アカウント → GAS(受け口) → スプレッドシート(台帳)
↓ 自由文のときだけ
Gemini(読み取り) → 承認待ちに積む → 管理者のLINEに通知
役割を1つずつ説明します。
- LINE公式アカウント:社員の方が話しかける窓口です。Messaging API(LINEとプログラムをつなぐ仕組み)を有効にして、届いたメッセージをGASへ転送させます。
- GAS:Googleアカウントがあれば無料で使える、小さなサーバーのようなものです。LINEから届いた内容を見て、打刻なのか修正の相談なのかを振り分けます。
- スプレッドシート:データベースの代わりです。社員の名簿、打刻の記録、修正申請の3つを別々のシートで持ちます。
- Gemini:社員の方が普通の言葉で送ってきた修正の相談を読み取る係です。後で詳しく書きますが、ここ以外ではAIを使っていません。
お金がかからない理由は、LINEの料金の数え方にあります。LINE公式アカウントの無料プラン(コミュニケーションプラン)は、月に200通までしか無料でメッセージを送れません。ところが、相手から届いたメッセージに返事をする「応答」は、この200通に数えられません(Messaging APIの「Reply API」は課金対象外)。
打刻の「出勤完了」という返事は、すべてこの応答で返しています。200通を消費するのは、こちらから先に送る通知だけです。この仕組みで言えば「管理者への修正申請のお知らせ」と「本人への承認のお知らせ」の2種類です。修正申請1件あたり「管理者の人数分+本人への1通」を使うので、管理者が2人なら1件で3通。月に60件程度までは無料枠に収まる計算です。
逆に言うと、「毎朝、打刻していない人に催促を送る」機能を足すと、こちらから先に送る通知になるので200通を消費します。人数×営業日で数えると、あっという間に超えます。機能を足す前に、それが応答なのか通知なのかを確認するのが、無料で運用し続けるコツです。
「出勤」「退勤」の2語は、AIを通さずに記録する
朝の工場の通用口へ、作業着の男性がスマートフォンを片手に歩いていく後ろ姿
「AIを使った勤怠Bot」と言うと、すべての会話をAIが処理しているように聞こえるかもしれません。実際は、「出勤」「退勤」とそのまま送られた打刻には、AIを通していません。
届いた言葉が「出勤」か「退勤」に完全に一致したときは、プログラムがそのまま記録します。AIを通さないので返事が速く、読み違えも起きません。AIに回すのは、それ以外の普通の文章が届いたときだけです。毎日何度も使うところほど、AIに判断させる理由がないのです。
そのかわり、打刻の処理にはいくつかの確認を入れました。
- 同じ打刻の連続をはじく:前回が「出勤」なのにまた「出勤」と送られたら、記録せずに「まずは退勤を打刻してください」と返します。押し間違いと二重送信の多くはこれで防げます。
- 押した時刻をそのまま残す:スプレッドシートには「打刻した時刻(生)」と「補正後の時刻」を別の列で持ちます。後から修正が入っても、元の時刻は消しません。
3つ目がとても大事です。後から修正が入ったときに「もともと何時に押していたか」を確かめられないと、管理者も社員の方も、修正が正しいのか判断できなくなります。
AIに任せるのは「読むこと」だけ。書き換えは人が承認する
事務所の机で、年配の男性がスマートフォンの画面を確かめながら穏やかにうなずいている様子
AIの出番は、打ち忘れや打ち間違いの修正です。
社員の方が「昨日の退勤、18時にしてください」と送ってきたとします。Geminiには、この文から「対象の日付」「出勤か退勤か」「時刻」の3つだけを、決まった形式(JSON)で書き出させます。 プロンプトで工夫したのは次の3点です。
1. 今日の日付を毎回渡す:AIは今日が何日かを知りません。「昨日」を正しい日付に直させるには、基準日を指示文に入れる必要があります。
2. 出力の形式を固定する:JSONだけを返すよう指定し、ぶれを減らす設定(temperature)も低くしています。
3. 読めなかったら推測させない:3つのうち1つでも欠けたら、申請を作らずに「具体的な日付と時間を教えてください」と聞き返します。
そして大事なのはここからです。AIが読み取った内容は、すぐには勤怠の記録に反映しません。 「未承認」の申請として別のシートに積み、管理者のLINEに「修正の申請がありました」と通知します。管理者が管理画面で承認して、はじめて記録に反映され、本人のLINEに「承認されました」と届きます。
なぜ、AIに直接書き換えさせないのか。勤怠の記録は、そのまま給与の元になるデータだからです。 AIの読み取りには、読み違いがゼロという保証がありません。たとえば「18時」を「8時」と取り違えたまま給与に乗れば、会社にとっても社員の方にとっても困ったことになります。
AIには「申請書を代わりに書く係」までをお願いして、判子を押すのは人。この線引きにしておけば、AIが読み違えても記録が勝手に変わることはありません。社員の方から見ても、「上司に口頭で頼んで、手書きの修正票を出す」手間がLINEの1通で済みます。
LINE勤怠打刻Botで気をつける4つの罠
ノートパソコンの前で、腕を組んで画面をじっと見つめて考え込んでいる男性の横顔
ここからが本題です。動くものを作るまでより、動かしてからのほうが気づくことは多くありました。この案件で実際に踏んだものと、先回りして最初から入れておいたものの両方を書きます。
罠1:友だち追加さえすれば、誰でも打刻できてしまう
LINE公式アカウントは、URLやQRコードを知っていれば誰でも友だち追加できます。何も対策しないと、社員ではない人の「出勤」まで記録されてしまいます。
そこで、最初の1回だけ「社員ID 初期パスワード」を送ってもらい、LINEのアカウントと名簿の社員を結びつけるようにしました。結びつけが済んでいない人の打刻は受け付けません。一度結びついた社員には、別のLINEアカウントから上書きできないようにもしています。機種変更などで結び直すときは、管理者が名簿の欄を一度空ける必要があります。
「誰から届いたか」を名簿で確かめる仕組みは、LINEのBotを社内で使うときの土台になります。作り方の記事では省かれがちですが、最初に入れておくべき部分です。
罠2:日付をまたぐ打刻と、「15日締め」の集計がずれる
勤怠は、カレンダーの日付どおりにはいきません。
1つは、日付をまたいで働いた日です。夜の12時を過ぎてから「退勤」と送ると、そのままでは翌日の記録として扱われ、前日の出勤と対になりません。そこで、深夜5時より前の打刻は前日の勤務として扱うようにしました。
もう1つは、締め日です。この会社様は15日締めなので、「9月分」と言えば8月16日から9月15日までを指します。最初の管理画面は、記録を全部まとめて表示するだけでした。これでは月末の確認のたびに、締め期間の行を目で探すことになります。
後から、締め月を選ぶと「前月16日から当月15日まで」だけが表示される絞り込みを足しました。月をまたぐ期間でも、月ごとのタブを横断して拾うようにしています。
市販のシステムなら最初から設定項目にある部分ですが、自作ではこうした会社ごとの決まりごとを、作る前に聞き出しておく必要があります。締め日、深夜の扱い、休憩の数え方。ここを後回しにすると、集計の段階で必ず手戻りが出ます。
罠3:直すたびにURLが変わり、LINEとの接続が切れる
GASのプログラムを直して公開し直すとき、「新しいデプロイ(公開の単位)」を作ると、公開URLが新しいものに変わります。 LINEは古いURLに送り続けるので、打刻がどこにも届かなくなります。しかも、社員の方のLINEには何も返ってこないだけなので、気づくのが遅れます。
直したときは、既存のデプロイに新しい版を割り当てる方法で公開します。そうすればURLは変わりません。コマンドで公開している場合は、デプロイのIDを指定して更新します。
もう1つ気をつけたいのが、似た名前のプロジェクトです。GASでは、試作のコピーが同じアカウントの中に残りがちです。本番がどれかは、LINEに登録しているURLから逆にたどって確かめるのが確実です。名前だけで判断して、使っていないほうを直してしまうことがあります。
罠4:1枚のシートに積み続けると重くなる。移し替えで記録が消えかけた
打刻の記録を1枚のシートに足し続けると、年単位ではシートが重くなり、読み書きが遅くなります。そこで、1年ごとに1ファイル、月ごとに1タブに分ける作りに変えました。
この移し替えで、危うく記録を消しかけました。
- 古い記録のうち約90件に、打刻のIDが入っていませんでした。IDが無い行を飛ばす作りにしていたため、最初に試したとき、ある月の記録がまるごと0件になりました。IDが無い行には移し替え用のIDを振ってから移す形に直しました
- 二重登録を防ぐ照合で、日時の値が「日付型」のまま比べられていて一致せず、同じ記録が重複して入りました。文字列に揃えてから照合するよう直し、年ファイルを作り直して復旧しています
最後は、移す前と移した後で、月ごとの件数が一致することを確かめてから切り替えました。記録を移すときは、件数の突き合わせを最後の関門にするのが一番確実です。
なお、移し替えのような一度きりの処理は、画面のボタンなど誰でも押せる場所には置かず、作業する人がエディタから手で実行するようにしています。間違って2回走らせると、また重複が起きるからです。
市販の勤怠システムとどちらを選ぶか
小さな町工場の事務所で、二人がホワイトボードの前に立って話し合っている様子
ここまで書いておいてなんですが、すべての会社に自作をおすすめするわけではありません。
自作が向いている会社
- 社員が数名から十数名で、社内の連絡がもともとLINE中心
- 必要なのは打刻と修正申請くらいで、シフト作成などは要らない
- 月額の利用料をかけずに、自社の締め日(たとえば15日締め)に合わせた集計がほしい
市販のシステムのほうが安全な会社
- 人数が多い、拠点が複数ある
- 有給休暇の管理、36協定の上限管理、シフト作成まで一つにまとめたい
- 給与ソフトとの連携や、法改正への自動対応が必須
自作の強みは、会社のやり方にぴったり合わせられることと、利用料がかからないことです。そのかわり、法改正への対応や不具合の修正は自分たち(または作った人)の仕事になります。この点は、作る前に決めておくべきです。
なお、同じGASで勤怠アプリを作るとき、管理画面にReactを載せるかどうかの判断基準は、別の記事にまとめています。
→ GAS勤怠アプリにReactは必要か。判断の分かれ目3つ
まとめ
LINEで勤怠打刻するBotは、LINE公式アカウント・GAS・スプレッドシート・Geminiの4つで、利用料をかけずに作れます。そのうえで、実際に動かして分かったことを5つにまとめます。
1. 決まった2語の打刻にはAIを通さない。 AIは自由文の修正相談を「読む」係に限る
2. AIが読んだ内容は、人が承認するまで記録に反映しない。 勤怠は給与の元データだから
3. 友だち追加だけで打刻できないように、最初に本人確認を挟む
4. 締め日・深夜の扱いなど、会社の決まりごとを作る前に聞き出す。 押した時刻は必ず残す
5. 公開URLを変えない更新方法と、移し替え時の件数の突き合わせを手順に入れる
「作れる」と「任せられる」のあいだにあるのは、技術よりも線引きの問題でした。AIに何をさせて、何をさせないか。そこを先に決めておくと、少人数の会社でも安心して使える仕組みになります。
出典(2026年9月11日時点)
【群馬・北関東の中小企業・ひとり社長のAI導入をサポート】
UMEO CREATE(ウメオクリエイト)では、群馬県(高崎・前橋・太田・伊勢崎・吉岡町など)を中心に、中小企業や個人事業主・ひとり社長様向けの「AI導入・業務自動化・DX伴走コンサルティング」を行っています。
「自社の業務でもAIを使える?」「何から手をつければいいかわからない」「面倒な事務作業を自動化したい」といったご相談は、お気軽に公式LINEまたはWebサイトのお問い合わせフォームよりご連絡ください。