先给结论:一个人的店,用 SP-API 把数据拉进 Google Sheet、再让 AI 写公式和周报,完全做得动——但成本不在写脚本,在于私有开发者的审核等待、报表的异步取数和接口口径的长期维护。 只想看销量和库存,买现成工具更划算;要的是别人工具里没有的那几个自定义指标,自己搭才值。本文接口名、报表类型以亚马逊官方开发者文档为准,限流数字以官方 OpenAPI 模型为准,均 2026年7月23日实查,代码按官方文档编写、未在本文中实跑

先算账:什么情况下才值得自己搭

隐性成本有四块:开发者审核要等(被追问信息须五天内回复,否则 case 关闭);报表要「下单→轮询→下载」三步、还可能是 GZIP 包;订单口径的销售额和结算口径的到账金额天然对不上;接口还会迭代——官方已写明 Reports API 的报表迁入 Data Kiosk 后会被弃用。

你的情况建议理由
只看销量、库存、广告花费买现成工具标准指标每家 BI 都有
要算自己的毛利(含头程、包材、退货摊销)自己搭成本结构因人而异,现成工具塞不进你的字段
多店铺 / 多站点合并看自己搭现成工具的多店铺常锁在高价档
完全没有编程经验买现成工具连接器路线也要你懂 OAuth 和报表结构

横向比现成工具,第三方评测站 AMZFinder 按工作流做了打分,比看厂商功能页省事。

SP-API 接入:私有应用怎么注册和授权

还在按 MWS 写的中文教程基本都过期了——SP-API 已取代 MWS,概念差别见站内旧文亚马逊销售伙伴 API VS MWS,接入流程请以下面这版为准。自用看板走私有开发者(Private Developer) 路线(官方注册页自授权页,2026年7月23日实查):

  1. Seller Central 菜单 → Apps and ServicesDevelop Apps,填注册表,Data Access 选 “Private Developer: I build application(s) that integrate my own company with Amazon Services APIs”。
  2. 勾选需要的 Roles(决定能读哪些数据,见站内亚马逊销售伙伴 API 中的角色官方角色页),填 Use Cases 与 Security Controls 后提交等审核。
  3. 通过后点 Authorize app 生成 refresh token。官方两条硬条件:自授权 Seller Central 账号你必须是该账号的 Primary User;私有应用可一直停在 draft,无需发布。

运行时换令牌是固定动作:POST https://api.amazon.com/auth/o2/token,表单参数 grant_type=refresh_tokenrefresh_tokenclient_idclient_secret,返回 access_tokenexpires_in 通常 3600 秒)。调接口不用做 AWS 签名:官方连接文档的示例就是「URI + 请求头、无签名信息」,需要 x-amz-access-tokenx-amz-date 和必填的 user-agent;端点按区域选北美 https://sellingpartnerapi-na.amazon.com、欧洲 -eu、远东 -fe。老教程那大段 SigV4 代码照抄只会多踩坑。

取哪些数据,以及广告数据的坑

广告数据不在 SP-API 里。 花费、ACOS、点击属于独立的 Amazon Ads API,它有自己的 LwA 客户端、授权和 profile ID。看板要有广告数据就得做两套接入——2026年7月23日实查 SP-API 文档目录,其中没有任何广告接口。

性价比最高的几类数据(接口名与报表类型均 2026年7月23日官方实查):

想看什么官方取数方式备注
销量/订单额趋势Sales API getOrderMetrics直接返回聚合值,granularity 支持 Hour/Day/Week/Month/Year/Total
订单明细Orders API getOrders含买家信息属受限数据,要走 Tokens API 拿 RDT
FBA 库存FBA Inventory API getInventorySummaries实时性最好;库龄与仓储费另走 FBA 报表
Session、转化率、Buy Box报表 GET_SALES_AND_TRAFFIC_REPORTJSON 输出,需 Brand Analytics 角色;dateGranularity 默认按天聚合
到账与扣费报表 GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2制表符文件;不可主动下单,由亚马逊自动生成、只能取;旧 flat file 与 XML 版官方公告 2026年11月11日移除

报表类走 Reports API v2021-06-30 三步:createReport → 轮询 getReportgetReportDocument 拿一个有效期五分钟的下载地址(响应带 compressionAlgorithm: GZIP 要先解压)。

结算报表是唯一例外,别照三步走:官方报表类型页写死了「Settlement reports cannot be requested or scheduled. They are automatically scheduled by Amazon.」——它由亚马逊按结算周期自动生成,对它调 createReport 只会拿到「该报表类型此时不允许请求」的报错。正确姿势是两步:getReportsreportTypes=GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2 列出已生成的那批(可加 processingStatuses=DONEcreatedSince 缩范围,官方默认回溯 90 天),取到 reportDocumentId 再走 getReportDocument 下载。官方 changelog 另公告旧的 XML 版与 flat file 版结算报表 2026年11月11日移除,新搭看板直接用 V2 版。

另有一个中文教程少提的新东西:Data Kiosk API(v2023-11-15),用 GraphQL 查数、结果给 JSONL,取销售与流量这类指标同样需要 Brand Analytics 角色;官方原话是它「具备 Reports API 现有的全部功能且更多」。新搭看板值得先去 Schema Explorer 看一眼要的指标在不在,省得半年后返工。

落到 Google Sheet:两条路线

路线怎么做适合谁短板
连接器API 连接器插件,如 Apipheny(支持自定义请求头、OAuth 2.0、定时刷新;2026年7月23日官网标价免费档 50 次调用、Pro 档 $15/月 5000 次,付费档均按席位计费)不碰代码、只要几张固定表按调用次数计费;报表的「轮询+解压」兜不住
写脚本Apps Script 用 UrlFetchApp + 时间触发器会一点 JS、要自定义口径重试、分页、解压都得自己写

顺带澄清一个误会:IMPORTDATA 救不了你——它的官方语法IMPORTDATA(url),只吃一个 URL,没有传 HTTP 头的入口,而 SP-API 每个请求都必须带 x-amz-access-token

脚本路线的最小骨架:

const ENDPOINT = 'https://sellingpartnerapi-na.amazon.com';
const CFG = PropertiesService.getScriptProperties(); // 凭证放脚本属性,别写死

function getAccessToken() {
  const res = UrlFetchApp.fetch('https://api.amazon.com/auth/o2/token', {
    method: 'post',
    payload: {
      grant_type: 'refresh_token',
      refresh_token: CFG.getProperty('REFRESH_TOKEN'),
      client_id: CFG.getProperty('CLIENT_ID'),
      client_secret: CFG.getProperty('CLIENT_SECRET')
    },
    muteHttpExceptions: true
  });
  return JSON.parse(res.getContentText()).access_token;
}

function pullDailySales() {
  const interval = '2026-07-01T00:00:00-07:00--2026-07-22T00:00:00-07:00';
  const url = ENDPOINT + '/sales/v1/orderMetrics?marketplaceIds=ATVPDKIKX0DER'
    + '&interval=' + encodeURIComponent(interval)
    + '&granularity=Day&granularityTimeZone=' + encodeURIComponent('America/Los_Angeles');

  const res = UrlFetchApp.fetch(url, {
    method: 'get',
    headers: {
      'x-amz-access-token': getAccessToken(),
      'user-agent': 'MyDashboard/1.0 (Language=AppsScript)' // 官方要求每个请求都带
    },
    muteHttpExceptions: true
  });
  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());

  const rows = JSON.parse(res.getContentText()).payload.map(function (p) {
    return [p.interval, p.unitCount, p.orderCount, p.totalSales.amount];
  });
  if (!rows.length) return; // 区间内没订单时 payload 为空,getRange 传 0 行会报错
  SpreadsheetApp.getActive().getSheetByName('raw_sales')
    .getRange(2, 1, rows.length, 4).setValues(rows);
}

function createTrigger() { // 执行一次即可建立定时触发器
  ScriptApp.newTrigger('pullDailySales').timeBased().everyHours(6).create();
}

Apps Script 有硬上限(官方配额页,2026年7月23日实查):单次执行 6 分钟、UrlFetch 每天 20000 次(gmail 账号)或 100000 次(Workspace)、触发器每天总时长 90 分钟(gmail)或 6 小时(Workspace)。别在一个触发器里同步等一个跑十分钟的报表,拆成「下单」和「取结果」两个。

看板放什么指标、什么时候报警

指标数据来源起步告警阈值
日销售额 / 单量getOrderMetrics连续 3 天低于近 28 天均值 20%
可售天数getInventorySummaries ÷ 近 14 天日均销量< 30 天催补货,< 14 天转紧急
转化率GET_SALES_AND_TRAFFIC_REPORT周环比跌 15%
Buy Box 占比GET_SALES_AND_TRAFFIC_REPORT< 90% 查跟卖与定价
单位净利结算报表金额 ÷ 单量低于保本线即报警
广告花费占比Amazon Ads API 报表 ÷ 销售额超目标 ACOS 5 个百分点

阈值这列是起步参考、不是行业标准,跑满一个月后用你自己的历史分布替换掉。广告那行怎么落到批量改动,接站内亚马逊广告批量操作表格实战

AI 那一层:写公式和写周报

我在 Google Sheet 有一张表 raw_sales:A 列 date(YYYY-MM-DD 文本)、
B 列 units、C 列 orders、D 列 sales。请给三条 Google Sheets 公式:
1. F2 算最近 7 天 sales 合计(以今天为准,不含今天);
2. G2 算最近 7 天与前 7 天的环比变化百分比;
3. H2 输出状态:跌超 20% 显示"预警",跌 5%-20% 显示"观察",否则"正常"。
只用 Google Sheets 支持的函数,日期列是文本要先转日期,不要引用不存在的列。
下面是我店铺的周度看板数据(日销售额、单量、Session、转化率、可售天数、
广告花费占比,以及上周同口径数字)。请你:
1. 用 5 句话说清这周和上周比发生了什么,每句必须引用具体数字;
2. 指出 2 个最值得追查的异常,说明依据是哪两个指标同时变动;
3. 给 3 条下周动作建议,按影响大小排序。
只用我给的数据,缺字段直接说"数据不足",不要推测原因,不要编造行业均值。

AI 在这层会写错什么,必须人工核这四处:

  • 函数方言:AI 常把 Excel 写法混进来,粘进 Sheet 直接报 #NAME?;粘完先看报错,再抽一行手工验算。
  • 时区:SP-API 返回时间带时区偏移,Sheet 按文件时区解析——日销售额对不上后台,多半差在这几个小时。
  • 口径:你问「销售额」,它可能给含税的、或把退款算进去了;每个求和范围你都要能说出统计的是哪几列。
  • 编造基准:问它「转化率 8% 算好吗」,它会编一个"行业平均",所以那句「不要编造行业均值」不能删。

AI 读后台报表的通用做法(脱敏、分表、交叉验证)见站内用 ChatGPT 读懂亚马逊后台报表

限流与稳定性

SP-API 用令牌桶限流,每个操作有自己的速率和突发上限。以下为 2026年7月23日从官方 OpenAPI 模型仓库实查(数字写在每个操作的 Usage Plan 表里,可自己点开核):

操作速率(次/秒)突发换算
getOrders0.016720约 1 次/分钟
getOrderMetrics0.5152 秒 1 次
getInventorySummaries22桶很浅,连发即限流
createReport0.016715约 1 次/分钟
getReport215轮询够用
getReportDocument0.016715约 1 次/分钟

三条实战结论:getInventorySummaries 桶只有 2、最容易被限,遍历 SKU 必须限速别开并发;报表别高频下单——createReport 自己就只有约 1 次/分钟的速率,而销售与流量报表默认按天聚合,正确姿势是每天定时拉一次、结果缓存在 Sheet 里;限流不是异常而是常态,收到 429 就退避重试(等 1 分钟、每次翻倍),这也是官方建议。令牌桶原理见站内亚马逊销售伙伴 API 的使用方案和速率限制

行动清单

  1. 先做第一节那道选择题:现成工具没有的那几个指标,才是自建的理由。
  2. 按私有开发者注册,勾最小够用的 Roles(要 Sales & Traffic 或 Data Kiosk 就得有 Brand Analytics)。
  3. 拿到 refresh token 存进脚本属性,绝不写死在代码里。
  4. 先只接 getOrderMetrics 跑通闭环,别一上来就接六个接口。
  5. 加时间触发器,报表类拆成「下单」和「取结果」两个,避开 6 分钟上限。
  6. 广告数据单独走 Amazon Ads API,别指望一套凭证通吃。

胜负手不是代码多漂亮,是把口径定死、把限流让开、把维护量压到最小。 剩下的重复劳动交给 AI 就行。


延伸阅读