😸

LINE × Googleスプレッドシートで作る日報Bot|FastAPIで自分専用業務管理

に公開

📌 はじめに

LINEで日報を送ると、自動でGoogleスプレッドシートに記録されるBotを作りました。
個人開発や業務改善を目的とした、自分専用の軽量日報システムです。

本記事では、FastAPI × LINE Bot × Google Sheets API を使って構築した手順と実装内容を紹介します。


📐 アーキテクチャ構成

以下のようなシンプルな流れです。

アーキテクチャ構成図

  • LINE ユーザーが日報を送信
  • FastAPI(Render上) がWebhook受信し、解析
  • Google Sheets API を使って スプレッドシートに記録

⚙️ 技術スタック

技術 用途
Python バックエンド言語
FastAPI Webアプリケーション
LINE Bot SDK ユーザーからの受信と返信
Google Sheets API スプレッドシート連携
Render デプロイ環境

📮 動作例

LINEで以下のように送信:

日報
作業内容:資料作成
所要時間:3h
課題:資料が足りない
明日:レビュー対応

![LINE送信例のスクリーンショット]

するとスプレッドシートにこのように記録されます:

日付 作業内容 所要時間 課題 明日の予定
2025/06/20 資料作成 3h 資料が足りない レビュー対応

![スプレッドシート例のスクリーンショット]


🔧 実装のポイント

1. Webhook受信(FastAPI)

@app.post("/callback")
async def callback(request: Request):
    body = await request.body()
    signature = request.headers.get("X-Line-Signature")
    handler.handle(body.decode("utf-8"), signature)
    return "OK"

2. メッセージ処理

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    if "日報" in event.message.text:
        # テキストをパースし、シートに書き込み

3. Google Sheets 書き込み

worksheet.append_row([today, task, time_spent, issue, tomorrow])

🚀 デプロイ(Render)

  • requirements.txtmain.py を準備
  • RenderのWeb Serviceとして main:app を登録
  • .env に以下を設定:
LINE_CHANNEL_ACCESS_TOKEN=
LINE_CHANNEL_SECRET=
SPREADSHEET_ID=
GOOGLE_APPLICATION_CREDENTIALS=credentials.json

🔮 今後の拡張予定

  • LINE SDK v3対応
  • 定時リマインダー送信機能
  • 入力内容のバリデーション・エラー通知
  • CSV/グラフ出力

💬 まとめ

「毎日の記録を少しでもラクにしたい」「Googleスプレッドシートで一元管理したい」という個人や小規模チームに向けた、実用的なBotの一例です。

GitHubリポジトリはこちら👇
🔗 github.com/tkagawa218/googleSheets


ぜひスター&フォローよろしくお願いします 🙌

Discussion