朝活遅刻罰金Bot — LINEグループで遅刻を記録し罰金を自動集計
Go to file
hiroki ito c1ce766b63 初回配布
Made-with: Cursor
2026-04-03 20:53:06 +09:00
src 初回配布 2026-04-03 20:53:06 +09:00
.clasp.json.example 初回配布 2026-04-03 20:53:06 +09:00
.claspignore 初回配布 2026-04-03 20:53:06 +09:00
.gitignore 初回配布 2026-04-03 20:53:06 +09:00
appsscript.json 初回配布 2026-04-03 20:53:06 +09:00
README.md 初回配布 2026-04-03 20:53:06 +09:00

朝活遅刻罰金Bot

朝活グループの遅刻を記録し、罰金を自動集計する LINE Bot です。

LINEグループに Bot を追加して「遅刻」と投稿するだけで、誰が何回遅刻したか、今月いくら払うべきかが自動で管理されます。毎月1日に前月の集計レポートが届き、メンバー同士で精算する運用です。

仕組み3パーツ

パーツ 料理の比喩 このツールでは
トリガー 伝票 LINE Webhookコマンド投稿時+ GAS 時間トリガー毎月1日
ソース元 冷蔵庫 Google スプレッドシート(遅刻記録ログ)
処理する場所 キッチン Google Apps Scriptコマンド解析・集計・レポート生成

全体の構成

LINE グループ
  ↓ Webhookコマンド投稿
Google Apps ScriptdoPost で直接受信)
  ↓ コマンド解析 → スプレッドシート読み書き
  ↓ LINE API で返信
LINE グループ

LINE のメッセージを GAS が直接受け取り、処理結果を LINE API で返信します。プロキシサーバーは不要です。

コマンド一覧

コマンド 動作
遅刻 自分の遅刻を記録
遅刻 @名前 他の人の遅刻を代理で記録
追加 ○回 自分の過去の遅刻をまとめて追加(例: 追加 3回
追加 @名前 ○回 他の人の過去分を代理で追加
集計 今月の遅刻回数と罰金額を表示
履歴 直近10件の記録を表示
取消 自分の遅刻を1件取り消し
取消 @名前 他の人の遅刻を代理で取り消し
ヘルプ コマンド一覧を表示

遅刻1回 = 500円。毎月1日に前月の集計が自動で届きます。

出力例

遅刻 と投稿すると:

⏰ 田中 遅刻3回目1,500円

他の人の分を代理記録すると:

⏰ 田中 遅刻3回目1,500円※鈴木が記録

集計 と投稿すると:

📊 2026年4月の遅刻集計
━━━━━━━━━━━━━━━
山田: 5回2,500円
田中: 3回1,500円
鈴木: 1回500円
━━━━━━━━━━━━━━━
合計: 9回4,500円
遅刻なし: 佐藤

履歴 と投稿すると:

📋 直近の記録
━━━━━━━━━━━━━━━
4/2 13:08 遅刻 田中
4/2 09:15 遅刻 山田 ※鈴木が記録
4/1 08:30 追加 山田 ×2回
3/31 19:00 取消 田中

セットアップ手順

準備するもの

  • Google アカウント
  • LINE アカウント(スマートフォン)

Part A: LINE の準備

手順1: LINE 公式アカウントを作る

  1. LINE Official Account Manager にアクセス
  2. 「アカウントを作成」→ 認証済みアカウントではなく「未認証アカウント」で作成
  3. アカウント名は「朝活Bot」など自由に設定

手順2: Messaging API を有効にする

  1. LINE Official Account Manager の「設定」→「Messaging API」を開く
  2. 「Messaging API を利用する」をクリック
  3. プロバイダーを選択(なければ新規作成)
  4. LINE Developers Console が開く

手順3: チャネルアクセストークンを取得

LINE Official Account Manager の Messaging API 画面には「Channel ID」と「Channel secret」が表示されますが、このBotに必要なのはどちらでもありません。必要なのは「チャネルアクセストークン長期」で、LINE Developers Console で発行します。

  1. LINE Developers Console を開く
  2. プロバイダー → 手順2で作成したチャネルを選択
  3. 「Messaging API設定」タブを開く
  4. ページ下部の「チャネルアクセストークン(長期)」→ 「発行」をクリック
  5. 表示されたトークンをコピーしてメモしておく

このトークンは他の人に見せないでください。 後で GAS に設定します。


Part B: GAS の構築

手順4: Google スプレッドシートを作る

  1. Google スプレッドシート で新しいスプレッドシートを作成
  2. 名前は「朝活Bot」など自由に設定
  3. シートは空のままで OKBot が初回実行時に自動作成します)

手順5: Google Apps Script にコードを貼り付ける

  1. スプレッドシートの「拡張機能」→「Apps Script」を開く
  2. 左側のファイル一覧で、最初からある コード.gs を削除する
  3. 以下の6ファイルを1つずつ追加する:

ファイルの追加方法: 左側の「+」→「スクリプト」をクリック → ファイル名を入力(拡張子 .gs は不要)

ファイル名 このリポジトリのパス
config src/config.gs
line src/line.gs
store src/store.gs
commands src/commands.gs
penalty src/penalty.gs
main src/main.gs

各ファイルの中身をコピー&ペーストしてください。

  1. appsscript.json を編集する:
    • 左上の歯車アイコン(プロジェクトの設定)をクリック
    • 「『appsscript.json』マニフェスト ファイルをエディタで表示する」にチェック
    • 左側に表示された appsscript.json を開き、このリポジトリの appsscript.json の内容で上書き

手順6: 初期設定(トークンの登録)

  1. Apps Script エディタでスプレッドシートに戻る
  2. スプレッドシートをリロードする
  3. メニューに「朝活Bot」が表示される初回は数秒かかる場合があります
  4. 「朝活Bot」→「初期設定」をクリック
  5. 手順3でメモした**チャネルアクセストークン(長期)**を入力 → OK

初回実行時に Google から「承認が必要です」と表示されます。「権限を確認」→ 自分の Google アカウントを選択 → 「詳細」→「(安全でないページに移動)」→「許可」の順に進めてください。

手順7: Web App としてデプロイ

  1. Apps Script エディタに戻る
  2. 右上の「デプロイ」→「新しいデプロイ」
  3. 種類の選択で歯車アイコン → 「ウェブアプリ」を選択
  4. 設定:
    • 説明: 「朝活Bot」
    • 次のユーザーとして実行: 「自分」
    • アクセスできるユーザー: 「全員」
  5. 「デプロイ」をクリック
  6. 表示された ウェブアプリの URL をコピー(https://script.google.com/macros/s/.../exec の形式)

Part C: LINE と接続

手順8: Webhook URL を設定

  1. LINE Developers Console でチャネルを開く
  2. 「Messaging API設定」タブ → 「Webhook URL」に 手順7の GAS デプロイ URL を貼り付け
  3. 「Webhookの利用」をオンにする

Webhook URL の検証について: 「検証」ボタンを押すとエラーが表示される場合がありますが、実際のメッセージ送受信には影響しません。手順9に進んで実際にメッセージを送って動作確認してください。

  1. LINE Official Account Manager の「設定」→「応答設定」を開く
  2. 応答メッセージ: オフLINE のデフォルト自動応答を無効にする)

手順9: Bot のグループ参加を許可する

Bot をグループに招待するには、事前に LINE Developers Console で参加許可の設定が必要です。この設定はデフォルトで無効になっています。

  1. LINE Developers Console でチャネルを開く
  2. 「Messaging API設定」タブを開く
  3. 「グループトーク・複数人トークへの参加を許可する」を有効にする

手順10: Bot をグループに招待

  1. LINE アプリで朝活グループを開く
  2. メンバー追加から、手順1で作った公式アカウントを友だち追加 → グループに招待
  3. Bot がグループに参加すると、自動でウェルカムメッセージが届く
  4. 「ヘルプ」と送信してコマンド一覧が表示されれば完了

手順11: 月次レポートトリガーを設定(任意)

毎月1日の朝に自動で前月の集計レポートが届くようにする:

  1. スプレッドシートのメニュー「朝活Bot」→「月次レポートトリガーを設定」
  2. 「毎月1日 7:00〜8:00 にトリガーを設定しました」と表示されれば OK

カスタマイズ

罰金額を変更する

src/config.gsPENALTY_AMOUNT を変更する:

const PENALTY_AMOUNT = 1000; // 1回1,000円に変更

変更後は Apps Script エディタで「デプロイ」→「デプロイを管理」→ 鉛筆アイコン → バージョンを「新バージョン」に変更 → 「デプロイ」。

集計レポートの見た目を変更する

src/penalty.gsgetSummary()getMonthlyReport() を編集する。


料金について

  • LINE 公式アカウント: 無料プラン(コミュニケーションプラン)で利用可能
  • コマンドへの応答Reply Message: 通数にカウントされない(完全無料)
  • 月次レポートPush Message: 送信先人数 × 1通でカウント。5人グループなら月5通。無料枠は月200通なので十分
  • Google Apps Script / Google スプレッドシート: 無料

セキュリティについて

GAS の Web App URL にはランダムなスクリプトID64文字が含まれており、この URL を知らない限りリクエストを送ることはできません。LINE Webhook の署名検証(x-line-signature)は GAS の仕様上実装できませんが、URL 自体が事実上のシークレットとして機能します。

デプロイ URL は他の人に見せないでください。


制約・注意事項

  • Webhook URL 検証: LINE Developers Console の「検証」ボタンはエラーを返すことがありますが、実際のメッセージ送受信には影響しません
  • 1グループ限定: 1つの GAS プロジェクトスプレッドシートで1つのグループを管理します。複数グループで使う場合は、グループごとにスプレッドシートと GAS プロジェクトを分けてください
  • 初回の応答が遅い場合があります: GAS は使っていない間はスリープ状態になります。しばらく使っていなかった後の最初のコマンドは、応答に数秒かかることがあります

clasp で開発する場合(上級者向け)

clasp を使うとローカルで編集して GAS にプッシュできます。

npm install -g @google/clasp
clasp login
cp .clasp.json.example .clasp.json
# .clasp.json の scriptId を自分の GAS プロジェクトの ID に書き換える
clasp push

GAS プロジェクトのスクリプト ID は、Apps Script エディタの「プロジェクトの設定」→「スクリプト ID」で確認できます。