用 Python requests + openpyxl 自动生成亚马逊广告日报 Excel
每天早上打开广告后台导出报表,再手工粘贴到 Excel 里做日报,重复又容易错。我把这一步写成了一个小脚本:用 requests 拉取广告数据,用 openpyxl 生成带格式的日报,顺手把数据透视的思路也放进去。
一、先把数据拿下来
广告报表一般支持按日期范围导出,先把返回的 JSON 或 CSV 按天落到本地一份原始明细,文件名带日期,例如 ads_2026-11-09.csv。请求时注意三点:分页要循环拉完、日期按天分段避免一次拉太多超时、把 HTTP 状态码和返回行数打到日志里,空结果先停下来排查,不要直接生成空日报。
import requests
resp = requests.get(url, params={"start": "2026-11-08", "end": "2026-11-08"}, timeout=30)
resp.raise_for_status()
rows = resp.json().get("data", [])
print(f"拉到 {len(rows)} 行")
二、日报长什么样
新建一个工作簿,第一张表叫“日报”,列依次是:日期、广告活动、曝光、点击、花费、订单、销售额。再加两列公式列:ACOS = 花费 / 销售额,ROAS = 销售额 / 花费。用 openpyxl 设置列宽、表头加粗加底色、金额保留两位小数,最后一行加合计。这样每天打开文件就能直接看,不用再手工算。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
wb = Workbook()
ws = wb.active
ws.title = "日报"
ws.append(["日期", "广告活动", "曝光", "点击", "花费", "订单", "销售额", "ACOS", "ROAS"])
for r in rows:
ws.append([r["date"], r["campaign"], r["impressions"], r["clicks"], r["spend"], r["orders"], r["sales"], f"=E{ws.max_row+1}/G{ws.max_row+1}", f"=G{ws.max_row+1}/E{ws.max_row+1}"])
wb.save("ads_daily_2026-11-09.xlsx")
三、数据透视的思路
只看日报总行不够,还要知道哪个活动在烧钱。我的做法是再建一张“明细”表存原始行,然后在“透视”表里按活动汇总:用 SUMIFS 按活动名求花费和销售额,再算出每个活动的 ACOS,按花费倒序排。这样不用每次手动拖透视字段,换一天数据、刷新公式就能复用。活动多的时候,先看花费前五名,再逐个看它们的点击率和转化率,比逐行翻明细快得多。
四、几点经验
第一,日期统一成 YYYY-MM-DD,Excel 里设成文本或日期格式,避免 11-09 被当成别的格式。第二,花费和销售额用 ROUND 保留两位小数,合计行用 SUM 公式而不是写死数字。第三,文件名按日期命名并保留最近 30 天的日报,方便回溯对比。第四,跑完先核对三处:总行数、总花费、总销售额,和后台数字对上再发给团队。
这个脚本不长,但把“下载、整理、计算、排版”四步固定下来之后,每天做日报就只剩运行一次、核对一次,省下来的时间可以真正用来调广告、看活动表现。
- 点赞
- 收藏
- 关注作者
评论(0)