# 朝活遅刻罰金Bot 朝活グループの遅刻を記録し、罰金を自動集計する LINE Bot です。 LINEグループに Bot を追加して「遅刻」と投稿するだけで、誰が何回遅刻したか、今月いくら払うべきかが自動で管理されます。毎月1日に前月の集計レポートが届き、メンバー同士で精算する運用です。 ## 仕組み(3パーツ) | パーツ | 料理の比喩 | このツールでは | |---|---|---| | トリガー | 伝票 | LINE Webhook(コマンド投稿時)+ GAS 時間トリガー(毎月1日) | | ソース元 | 冷蔵庫 | Google スプレッドシート(遅刻記録ログ) | | 処理する場所 | キッチン | Google Apps Script(コマンド解析・集計・レポート生成) | ## 全体の構成 ``` LINE グループ ↓ Webhook(コマンド投稿) Google Apps Script(doPost で直接受信) ↓ コマンド解析 → スプレッドシート読み書き ↓ 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](https://manager.line.biz/) にアクセス 2. 「アカウントを作成」→ 認証済みアカウントではなく「未認証アカウント」で作成 3. アカウント名は「朝活Bot」など自由に設定 #### 手順2: Messaging API を有効にする 1. LINE Official Account Manager の「設定」→「Messaging API」を開く 2. 「Messaging API を利用する」をクリック 3. プロバイダーを選択(なければ新規作成) 4. [LINE Developers Console](https://developers.line.biz/console/) が開く #### 手順3: チャネルアクセストークンを取得 LINE Official Account Manager の Messaging API 画面には「Channel ID」と「Channel secret」が表示されますが、**このBotに必要なのはどちらでもありません**。必要なのは「チャネルアクセストークン(長期)」で、LINE Developers Console で発行します。 1. [LINE Developers Console](https://developers.line.biz/console/) を開く 2. プロバイダー → 手順2で作成したチャネルを選択 3. **「Messaging API設定」タブ**を開く 4. ページ下部の「チャネルアクセストークン(長期)」→ **「発行」をクリック** 5. 表示されたトークンをコピーしてメモしておく **このトークンは他の人に見せないでください。** 後で GAS に設定します。 --- ### Part B: GAS の構築 #### 手順4: Google スプレッドシートを作る 1. [Google スプレッドシート](https://sheets.google.com/) で新しいスプレッドシートを作成 2. 名前は「朝活Bot」など自由に設定 3. シートは空のままで OK(Bot が初回実行時に自動作成します) #### 手順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` | 各ファイルの中身をコピー&ペーストしてください。 4. `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](https://developers.line.biz/console/) でチャネルを開く 2. 「Messaging API設定」タブ → 「Webhook URL」に **手順7の GAS デプロイ URL** を貼り付け 3. 「Webhookの利用」をオンにする > **Webhook URL の検証について**: 「検証」ボタンを押すとエラーが表示される場合がありますが、実際のメッセージ送受信には影響しません。手順9に進んで実際にメッセージを送って動作確認してください。 4. [LINE Official Account Manager](https://manager.line.biz/) の「設定」→「応答設定」を開く 5. **応答メッセージ**: オフ(LINE のデフォルト自動応答を無効にする) #### 手順9: Bot のグループ参加を許可する Bot をグループに招待するには、事前に LINE Developers Console で参加許可の設定が必要です。この設定はデフォルトで無効になっています。 1. [LINE Developers Console](https://developers.line.biz/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.gs` の `PENALTY_AMOUNT` を変更する: ```javascript const PENALTY_AMOUNT = 1000; // 1回1,000円に変更 ``` 変更後は Apps Script エディタで「デプロイ」→「デプロイを管理」→ 鉛筆アイコン → バージョンを「新バージョン」に変更 → 「デプロイ」。 ### 集計レポートの見た目を変更する `src/penalty.gs` の `getSummary()` や `getMonthlyReport()` を編集する。 --- ## 料金について - **LINE 公式アカウント**: 無料プラン(コミュニケーションプラン)で利用可能 - **コマンドへの応答**(Reply Message): 通数にカウントされない(完全無料) - **月次レポート**(Push Message): 送信先人数 × 1通でカウント。5人グループなら月5通。無料枠は月200通なので十分 - **Google Apps Script / Google スプレッドシート**: 無料 --- ## セキュリティについて GAS の Web App URL にはランダムなスクリプトID(64文字)が含まれており、この URL を知らない限りリクエストを送ることはできません。LINE Webhook の署名検証(`x-line-signature`)は GAS の仕様上実装できませんが、URL 自体が事実上のシークレットとして機能します。 **デプロイ URL は他の人に見せないでください。** --- ## 制約・注意事項 - **Webhook URL 検証**: LINE Developers Console の「検証」ボタンはエラーを返すことがありますが、実際のメッセージ送受信には影響しません - **1グループ限定**: 1つの GAS プロジェクト(スプレッドシート)で1つのグループを管理します。複数グループで使う場合は、グループごとにスプレッドシートと GAS プロジェクトを分けてください - **初回の応答が遅い場合があります**: GAS は使っていない間はスリープ状態になります。しばらく使っていなかった後の最初のコマンドは、応答に数秒かかることがあります --- ## clasp で開発する場合(上級者向け) [clasp](https://github.com/google/clasp) を使うとローカルで編集して GAS にプッシュできます。 ```bash 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」で確認できます。