用 Python requests + openpyxl 自动生成亚马逊广告日报 Excel

举报
yd_295675147 发表于 2026/11/09 00:28:20 2026/11/09
【摘要】 每天早上打开广告后台导出报表,再手工粘贴到 Excel 里做日报,重复又容易错。我把这一步写成了一个小脚本:用 requests 拉取广告数据,用 openpyxl 生成带格式的日报,顺手把数据透视的思路也放进去。 一、先把数据拿下来广告报表一般支持按日期范围导出,先把返回的 JSON 或 CSV 按天落到本地一份原始明细,文件名带日期,例如 ads_2026-11-09.csv。请求时注意...

每天早上打开广告后台导出报表,再手工粘贴到 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 天的日报,方便回溯对比。第四,跑完先核对三处:总行数、总花费、总销售额,和后台数字对上再发给团队。

这个脚本不长,但把“下载、整理、计算、排版”四步固定下来之后,每天做日报就只剩运行一次、核对一次,省下来的时间可以真正用来调广告、看活动表现。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。