📊 每日報表生成
每天早上打開通訊軟體,一份整理好的業務報表已經等著你。這就是每日報表自動化——讓 Rose 幫你收集數據、分析趨勢、整理成易讀的格式。
情境描述
適用場景
| 場景 | 報表內容 |
|---|---|
| 🛒 電商經營 | 昨日營業額、訂單數、熱銷商品 |
| 📱 App 營運 | 活躍用戶、新增用戶、留存率 |
| 🌐 網站管理 | 瀏覽量、熱門頁面、流量來源 |
| 💰 財務管理 | 收支明細、現金流、應收帳款 |
| 📊 行銷追蹤 | 廣告成效、轉換率、ROI |
預期效果
- ⏰ 節省時間:不用每天手動登入各平台查數據
- 📈 即時掌握:一早就知道昨天的業務狀況
- 🎯 快速決策:數據彙整後更容易發現趨勢
- 📱 隨時隨地:手機就能查看報表
資料來源整合
常見資料來源
| 來源類型 | 取得方式 | 難易度 |
|---|---|---|
| Google Analytics | API 串接 | ⭐⭐ |
| 資料庫 | SQL 查詢 | ⭐⭐⭐ |
| 試算表 | Google Sheets API | ⭐⭐ |
| 第三方平台 | REST API | ⭐⭐⭐ |
| CSV/JSON 檔案 | 檔案讀取 | ⭐ |
資料整合流程
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 資料來源 │ → │ 資料收集 │ → │ 資料處理 │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ • GA4 │ │ │ │ │
│ • 資料庫 │ │ Rose 執行 │ │ • 彙整 │
│ • API │ │ 查詢/呼叫 │ │ • 計算 │
│ • 檔案 │ │ │ │ • 分析 │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ 產生報表 │
├──────────────┤
│ • 格式化 │
│ • 圖表化 │
│ • 發送 │
└──────────────┘
報表格式設計
基本報表結構
{`# 📊 每日業務報表
**日期:** 2026-03-21
**產生時間:** 08:00
---
## 📈 核心指標
| 指標 | 昨日 | 前日 | 變化 |
|------|------|------|------|
| 營業額 | $50,000 | $45,000 | +11% 🟢 |
| 訂單數 | 120 | 110 | +9% 🟢 |
| 客單價 | $417 | $409 | +2% 🟢 |
| 訪客數 | 2,500 | 2,800 | -11% 🔴 |
---
## 🏆 昨日亮點
- 營業額創本週新高
- 新品「XXX」銷售表現優異(售出 30 件)
---
## ⚠️ 需要注意
- 訪客數下降 11%,建議檢查流量來源
- 購物車放棄率略高(65%)
---
## 📋 今日待辦
- [ ] 跟進昨日未完成訂單
- [ ] 檢查庫存水位
- [ ] 回覆客戶反饋
---
💡 *這份報表由 Rose 自動生成*`}
報表設計原則
| 原則 | 說明 | 範例 |
|---|---|---|
| 重點先行 | 最重要的數據放在最前面 | 核心指標表格 |
| 對比清楚 | 與前一天/上週比較 | 變化百分比 + 顏色標示 |
| 視覺化 | 使用 emoji 和表格 | 🟢 成長 🔴 下降 |
| 行動導向 | 提供下一步建議 | 今日待辦清單 |
自動發送設定
使用 Cron 排程
{`# 每天早上 8 點生成並發送報表
0 8 * * * cd /home/node/.openclaw/workspace && node scripts/daily-report.js
# 每週一早上 8 點發送週報表
0 8 * * 1 cd /home/node/.openclaw/workspace && node scripts/weekly-report.js
# 每月 1 號早上 8 點發送月報表
0 8 1 * * cd /home/node/.openclaw/workspace && node scripts/monthly-report.js`}
報表生成腳本範例
{`// 每日報表生成腳本
const { getGA4Data } = require('./apis/google-analytics');
const { queryDatabase } = require('./apis/database');
const { sendTelegramMessage } = require('./apis/telegram');
async function generateDailyReport() {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
// 收集數據
const [gaData, orderData] = await Promise.all([
getGA4Data(yesterday),
queryDatabase('
SELECT COUNT(*) as orders, SUM(total) as revenue
FROM orders
WHERE DATE(created_at) = DATE(?)
', [yesterday])
]);
// 計算變化
const prevDayData = await getPrevDayData(yesterday);
const changes = calculateChanges(orderData, prevDayData);
// 生成報表內容
const report = formatReport({
date: formatDate(yesterday),
revenue: orderData.revenue,
orders: orderData.orders,
visitors: gaData.activeUsers,
changes: changes
});
// 發送報表
await sendTelegramMessage({
chat_id: process.env.ADMIN_CHAT_ID,
text: report,
parse_mode: 'Markdown'
});
console.log('✅ 報表已發送');
}
generateDailyReport().catch(console.error);`}
使用 Heartbeat 檢查
{`# Heartbeat 任務清單
## 每日報表檢查
時間:每天 08:00
任務:
1. 檢查報表是否正常發送
2. 檢查資料是否完整
3. 如有異常,立即通知管理員
## 資料源健康檢查
時間:每天 06:00
任務:
1. 檢查 GA4 API 連線
2. 檢查資料庫連線
3. 檢查試算表權限
4. 記錄檢查結果`}
進階應用
多平台報表整合
{`# 📊 全平台每日報表
## 🛒 電商平台
| 平台 | 營業額 | 訂單數 | 狀態 |
|------|--------|--------|------|
| 官網 | $30,000 | 75 | 🟢 |
| 蝦皮 | $15,000 | 35 | 🟢 |
| momo | $5,000 | 10 | 🟡 |
## 📱 社群媒體
| 平台 | 追蹤數 | 互動率 | 新增貼文 |
|------|--------|--------|----------|
| FB | 5,200 | 3.2% | 2 |
| IG | 3,800 | 4.1% | 3 |
| LINE | 2,100 | 12% | 1 |
## 📧 電子報
- 發送數:1,500
- 開信率:25%
- 點擊率:3.5%
總計:營業額 $50,000 | 總訂單 120 | 總訪客 2,500`}
異常偵測與警報
{`# 異常偵測設定
alerts:
revenue_drop:
condition: "revenue < yesterday_revenue * 0.7"
message: "🚨 營業額較昨日下降超過 30%"
priority: high
order_spike:
condition: "orders > avg_orders * 2"
message: "📈 訂單暴增,請確認庫存充足"
priority: medium
zero_sales:
condition: "revenue == 0"
message: "⚠️ 今日無銷售,請檢查系統狀態"
priority: high
traffic_drop:
condition: "visitors < yesterday_visitors * 0.5"
message: "🔴 流量異常下降,請檢查網站"
priority: high`}
報表歷史追蹤
{`#!/bin/bash
# 報表歸檔腳本
REPORT_DIR="/reports/daily"
ARCHIVE_DIR="/reports/archive"
DATE=$(date +%Y%m%d)
# 建立月分目錄
MONTH_DIR="$ARCHIVE_DIR/$(date +%Y-%m)"
mkdir -p "$MONTH_DIR"
# 移動上個月的報表到歸檔ind "$REPORT_DIR" -name "report-*.md" -mtime +30 -exec mv {} "$MONTH_DIR/" \;
# 壓縮超過 3 個月的歸檔
find "$ARCHIVE_DIR" -name "*.tar.gz" -mtime +90 -delete
# 壓縮上個月歸檔
if [ "$(date +%d)" == "01" ]; then
LAST_MONTH="$(date -d 'last month' +%Y-%m)"
tar -czf "$ARCHIVE_DIR/$LAST_MONTH.tar.gz" -C "$ARCHIVE_DIR" "$LAST_MONTH/"
rm -rf "$ARCHIVE_DIR/$LAST_MONTH/"
fi
echo "✅ 報表歸檔完成"`}
常見問題
Q: 報表資料不準確怎麼辦?
- 檢查資料來源 API 權限
- 確認時區設定正確
- 比對原始數據驗證
- 建立資料驗證機制
Q: 可以自訂報表時間嗎?
可以!修改 Cron 設定:
- 早上 8 點:
0 8 * * * - 晚上 6 點:
0 18 * * * - 每 4 小時:
0 */4 * * *
Q: 報表太長可以簡化嗎?
可以設定摘要模式:
- 只顯示核心指標
- 有異常才顯示詳細資訊
- 提供「查看完整報表」連結
小結
📊 每日報表生成讓你每天早上就能掌握業務全貌:
- 資料整合:連接各平台 API,自動收集數據
- 視覺呈現:表格、emoji、顏色標示,易讀易懂
- 自動發送:Cron 排程,定時送到你手中
- 智能警報:異常自動通知,不錯過重要變化