Kon's DX Lab - Case Study

Day 52|返品CSVを“定時で自動生成”。Slack通知まで含めた仕組みが完成!

Published on 2025-05-23

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです🦊
今日は、返品処理の自動化をさらに一歩進めて、「毎日定時で動く返品CSV生成バッチ」を完成させました!


🧪 今日のチャレンジ:「任意の人が動かさなくても、業務が進む」状態を作りたい

これまで、Streamlit やスクリプトで返品対応の自動化を進めてきましたが、

  • 誰かが手動で実行しないといけない

  • 実行結果を報告する手間が残る

という「最後の一歩」が残っていました。


⚙ 取り組んだ内容:定時自動バッチの構築(Python × Google Sheets × Slack)

✅ ステップ①:対象データの抽出

Googleスプレッドシートの返品リストから、

  • 荷物のステータス == “良品移動”

  • 出力ステータス != “TRUE”

の条件で抽出。すでに出力済のものはスキップされます。

✅ ステップ②:SQLiteから商品明細をJOIN

返品問番(送り状番号)をキーに、
あらかじめロジレスから取得しSQLiteに保存されている出荷データと突合。

  • 商品が複数含まれる場合も、1商品=1行に展開

✅ ステップ③:CSVを自動生成+Slack通知

出力先フォルダを固定し、
ファイル名には 日時_件数 を付与。

さらに Slack には以下のようなコードを利用して通知を送信:

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

def notify_slack(message):
    client = WebClient(token=SLACK_TOKEN)
    try:
        client.chat_postMessage(channel=SLACK_CHANNEL, text=message)
    except SlackApiError as e:
        print(f"Slack通知エラー: {e.response['error']}")

notify_slack(f"【{project_name} 返品入荷】{len(df_filtered)}件を出力しました\nファイルパス: {full_output_path.replace('/', '\\')}")

📦 成果:人手を介さず、正確に「次の作業」が進む状態を実現!

  • 定時バッチ実行 → Slack通知までノンストップ

  • 出力履歴はスプレッドシートに記録(出力日・件数・ファイル名・出力元)

  • 誰かが「実行したか?」を確認する必要すらなくなった!


🧭 明日以降のチャレンジ

  • 「未返信データ」に対するキャンセル自動判定

  • クレジット支払い返品への1回限り通知

  • ロジレスAPIでの /inbound_orders/create 自動連携

  • SlackだけでなくNotionへの記録連携も検討中


📌 今日のまとめ

📥 毎日定時で「良品移動」の返品を検出し、
📄 ロジレスにそのままアップできるCSVを生成、
📢 Slackでチームに即通知。

1人でやっていたルーチンが、もう人手を介さず回り始めました。

それでは、また次の実験で🦊


🏷 ハッシュタグ案

#返品対応DX #Slack通知 #Python自動化 #GoogleSheetsAPI #業務効率化 #定時バッチ #ロジレスAPI #EC業務改善