|
|
||
|---|---|---|
| src | ||
| .clasp.json.example | ||
| .claspignore | ||
| .gitignore | ||
| appsscript.json | ||
| README.md | ||
朝活遅刻罰金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 公式アカウントを作る
- LINE Official Account Manager にアクセス
- 「アカウントを作成」→ 認証済みアカウントではなく「未認証アカウント」で作成
- アカウント名は「朝活Bot」など自由に設定
手順2: Messaging API を有効にする
- LINE Official Account Manager の「設定」→「Messaging API」を開く
- 「Messaging API を利用する」をクリック
- プロバイダーを選択(なければ新規作成)
- LINE Developers Console が開く
手順3: チャネルアクセストークンを取得
LINE Official Account Manager の Messaging API 画面には「Channel ID」と「Channel secret」が表示されますが、このBotに必要なのはどちらでもありません。必要なのは「チャネルアクセストークン(長期)」で、LINE Developers Console で発行します。
- LINE Developers Console を開く
- プロバイダー → 手順2で作成したチャネルを選択
- 「Messaging API設定」タブを開く
- ページ下部の「チャネルアクセストークン(長期)」→ 「発行」をクリック
- 表示されたトークンをコピーしてメモしておく
このトークンは他の人に見せないでください。 後で GAS に設定します。
Part B: GAS の構築
手順4: Google スプレッドシートを作る
- Google スプレッドシート で新しいスプレッドシートを作成
- 名前は「朝活Bot」など自由に設定
- シートは空のままで OK(Bot が初回実行時に自動作成します)
手順5: Google Apps Script にコードを貼り付ける
- スプレッドシートの「拡張機能」→「Apps Script」を開く
- 左側のファイル一覧で、最初からある
コード.gsを削除する - 以下の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 |
各ファイルの中身をコピー&ペーストしてください。
appsscript.jsonを編集する:- 左上の歯車アイコン(プロジェクトの設定)をクリック
- 「『appsscript.json』マニフェスト ファイルをエディタで表示する」にチェック
- 左側に表示された
appsscript.jsonを開き、このリポジトリのappsscript.jsonの内容で上書き
手順6: 初期設定(トークンの登録)
- Apps Script エディタでスプレッドシートに戻る
- スプレッドシートをリロードする
- メニューに「朝活Bot」が表示される(初回は数秒かかる場合があります)
- 「朝活Bot」→「初期設定」をクリック
- 手順3でメモした**チャネルアクセストークン(長期)**を入力 → OK
初回実行時に Google から「承認が必要です」と表示されます。「権限を確認」→ 自分の Google アカウントを選択 → 「詳細」→「(安全でないページに移動)」→「許可」の順に進めてください。
手順7: Web App としてデプロイ
- Apps Script エディタに戻る
- 右上の「デプロイ」→「新しいデプロイ」
- 種類の選択で歯車アイコン → 「ウェブアプリ」を選択
- 設定:
- 説明: 「朝活Bot」
- 次のユーザーとして実行: 「自分」
- アクセスできるユーザー: 「全員」
- 「デプロイ」をクリック
- 表示された ウェブアプリの URL をコピー(
https://script.google.com/macros/s/.../execの形式)
Part C: LINE と接続
手順8: Webhook URL を設定
- LINE Developers Console でチャネルを開く
- 「Messaging API設定」タブ → 「Webhook URL」に 手順7の GAS デプロイ URL を貼り付け
- 「Webhookの利用」をオンにする
Webhook URL の検証について: 「検証」ボタンを押すとエラーが表示される場合がありますが、実際のメッセージ送受信には影響しません。手順9に進んで実際にメッセージを送って動作確認してください。
- LINE Official Account Manager の「設定」→「応答設定」を開く
- 応答メッセージ: オフ(LINE のデフォルト自動応答を無効にする)
手順9: Bot のグループ参加を許可する
Bot をグループに招待するには、事前に LINE Developers Console で参加許可の設定が必要です。この設定はデフォルトで無効になっています。
- LINE Developers Console でチャネルを開く
- 「Messaging API設定」タブを開く
- 「グループトーク・複数人トークへの参加を許可する」を有効にする
手順10: Bot をグループに招待
- LINE アプリで朝活グループを開く
- メンバー追加から、手順1で作った公式アカウントを友だち追加 → グループに招待
- Bot がグループに参加すると、自動でウェルカムメッセージが届く
- 「ヘルプ」と送信してコマンド一覧が表示されれば完了
手順11: 月次レポートトリガーを設定(任意)
毎月1日の朝に自動で前月の集計レポートが届くようにする:
- スプレッドシートのメニュー「朝活Bot」→「月次レポートトリガーを設定」
- 「毎月1日 7:00〜8:00 にトリガーを設定しました」と表示されれば OK
カスタマイズ
罰金額を変更する
src/config.gs の PENALTY_AMOUNT を変更する:
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 を使うとローカルで編集して 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」で確認できます。