

# 如何导出 Google 广告创意并保留其来源证据

保存带有来源记录的公开 Google 广告创意，需要保留广告主 ID、创意 ID、来源页面、媒体或预览指针、公开日期和采集时间。一个已保存的链接库会保留证据记录和指针。它不会使远程媒体成为永久文件。一条创意是一项公开广告条目，不是一个广告系列。一次观察是采集时对一条创意所作的一条带日期记录。一个指针是指向一项资源的链接。一份清单是采集设置与摘要文件。

域名搜索可能匹配多个不同的广告主账户。[核对广告主身份](/zh-Hans/articles/%E7%AB%9E%E5%93%81%E5%B9%BF%E5%91%8A%E6%8A%A5%E5%91%8A%E5%89%8D%E7%9A%84%E5%B9%BF%E5%91%8A%E4%B8%BB%E8%B4%A6%E6%88%B7%E7%BA%B3%E5%85%A5%E5%9B%BE/)并保留未知值。后来无法访问的链接并不能证明 Google 删除了该广告。

## 定义

- 创意：一项公开广告条目。它不是一个广告系列。
- 广告主 ID：Google 为广告主提供的账户身份。
- 创意 ID：Google 为某一广告主下一条创意提供的身份。
- 观察：采集时对一条创意的记录。
- 指针：指向远程媒体或预览资源的链接。
- 清单：一份采集设置与摘要文件。
- 变体：一条创意记录内的一项媒体或预览。它不一定是单独的广告测试。
- 预览：用于展示一条创意的来源资源。它可能需要渲染，并且不总是可下载的文件。
- Actor：一个托管的数据采集程序。
- 已发布任务：一份已保存的公开 Actor 设置。
- **`null`**：没有可用的值。它不是 0。

## 采集设置与范围

要采集创意数据，请配置一个 Actor，例如公开的 [Google Ads Transparency Scraper](https://apify.com/chronometrica/google-ads-transparency-scraper)。该 Actor 接受 1 到 100 个目标，这些目标可以是名称、域名、ID、广告主 URL 或创意 URL。`maxItems` 设置的范围是 1 到 5000，默认值 10 由所有目标共享。

已发布任务的默认设置是 `nike.com`、区域 `ANYWHERE`、平台 `ALL`、广告格式 `ALL`、投放详情关闭，以及 20 条的上限 [Google Ads Creative Library Export | Ads Data](https://apify.com/chronometrica/google-ads-transparency-scraper/examples/google-ads-creative-library-export)。域名搜索可能匹配多个广告主账户，因此在调查一个特定账户时，你必须使用经过核实的精确广告主 ID 或 URL。只有当你计划在之后审查并区分这些账户时，才使用域名搜索。请降低采集上限并保持投放详情关闭，除非你的研究特别需要投放元数据。可选的日期筛选器接受直至今天的真实日期。请记住，采集上限是一项限制，而不是完整的广告历史。

## 字段映射与数据限制

每一条已保存的行都映射来源平台的特定数据字段。`advertiserId` 和 `creativeId` 组成一个唯一的创意身份对。你绝不能只凭品牌名称识别账户。`creativeUrl` 指向公开的来源详情页。`mediaUrl` 和 `previewUrl` 都是远程来源指针，可以返回 `null`，而且预览可以是 JavaScript 资源，而不是直接文件。`variations` 列表和 `variationCount` 记录嵌套的子资产及其 URL 和尺寸，但这些子资产不是独立的广告系列变体。

`firstShownAt` 和 `lastShownAt` 字段在可用时提供公开的展示日期，但它们不能保证连续投放或采集时间。`approxDaysShown` 字段是一个近似的来源值，不得被转换成精确的连续天数、广告支出或广告系列成功。`observedAt` 时间戳记录 Actor 采集该记录的时间。所请求的区域、平台和格式字段提供采集上下文，而不是已投放位置的完整列表。`status` 和 `statusReason` 字段表示行质量，其中 `ok` 表示采集成功，`partial` 可以表示缺少格式。可选的付款方字段可能缺失或被关闭，而且付款方不一定是广告主。此外，Google 的来源库可以公开特定于位置的字段，而此 Actor 不会返回这些字段 [Google 广告透明度帮助](https://support.google.com/adspolicy/answer/13733850?hl=en-CA)。

## 观察键与由读者建立的清单

必须把广告主 ID 和创意 ID 作为一对来处理，因为在两个不同广告主下的同一个创意 ID 代表两个不同的身份。Actor 只在单次运行内去除这一对的重复项，而后续运行会保留一条新的观察。因为 Actor 行不提供运行 ID，所以你必须创建由读者建立的字段。

为你的批次分组创建一个由读者建立的 `collection_batch_id`。在一份单独的、由读者建立的采集清单中保留实际的运行 ID、构建版本、数据集身份、采集设置、采集时间和运行摘要。建议的观察键组合了批次 ID、广告主 ID 和创意 ID。把你的内部运行回执与你的最终证据报告分开保存。

## JSON 数据存储与变体

JSON 是一种保留结构化层次的文本数据格式。完整的 JSON 文件会保留嵌套变体，而 CSV 导出只是一种可选的扁平表格视图。一条父观察行可以包含嵌套的变体行，但这些子变体不是单独的创意测试或广告系列测试。始终保留 `null` 值，而不要用 0 或编造的数据替换它们。展示库是一种派生视图，这意味着你必须始终在其下层保留你的原始观察文件。

## 完整的采集与保留方法

1. 配置你的目标范围、区域、公开日期窗口和条目上限。在调查一个特定账户时，使用经过核实的精确广告主 ID 或 URL，并且只在有采集后审查时使用域名搜索。除非需要，否则保持投放详情关闭。
2. 执行 Actor 运行 [Google Ads Transparency Scraper](https://apify.com/chronometrica/google-ads-transparency-scraper)，并使用已发布任务 [Google Ads Creative Library Export | Ads Data](https://apify.com/chronometrica/google-ads-transparency-scraper/examples/google-ads-creative-library-export) 中的设置。
3. 在一份由读者建立的清单中记录你的采集设置。将运行 ID、构建版本、数据集身份、采集设置、采集时间和运行摘要与你的公开证据报告分开存储。
4. 检查 OUTPUT 摘要字段，包括 `creativesSaved`、`duplicatesSkipped`、`unusableCreativesSkipped`、`stopReason` 和 `targetOutcomes`。把部分记录、失败的目标、结果为 0 和因上限而停止区分开。请记住，空的或被缩减的输出数据集不能证明某个广告主没有投放任何广告。
5. 应用这条精确的接受规则：一条已识别的观察必须具备非空白的 `advertiserId`、`creativeId`、`creativeUrl` 和 `observedAt`。审查 `status` 和 `statusReason` 字段。保留明确缺失的 `mediaUrl` 或 `previewUrl` 值；不要把 `null` 变成 0，也不要编造链接。把缺少身份的行隔离到单独的审查文件中，而不是合并空白项。
6. 创建与 Actor 字段分开的、由读者建立的列。分配一个由读者建立的 `collection_batch_id`，并通过组合批次 ID、广告主 ID 和创意 ID 来建立你的观察键。
7. 存储完整的 JSON 观察文件，以保留嵌套变体。把子变体记录保留在其父观察行下，而不把子资产计为独立的创意测试或广告系列测试。
8. 执行并记录单独且独立的链接检查，记录内容包括检查时间、指针类型、方法和结果。当新指针出现时保留较早的指针，并且即使远程链接变得不可用，也保留观察记录。
9. 追加后续采集批次，而不替换你较早的观察文件。把历史记录与你的派生最新视图展示一并保留。
10. 把你最终确定的来源库、采集清单、带日期的链接检查记录和派生的最新视图交到报告步骤。使用原来的广告主 ID 与创意 ID 对再次找到来源，并在任何创意评分或广告系列建议之前停止。

## 独立链接检查与 HTTP HEAD 请求

创建一条单独的链接检查记录，其中包含父级身份和批次、指针类型、检查时间、方法和结果。HTTP HEAD 请求只向服务器询问响应标头，而不是文件内容。渲染是指在浏览器内成功显示预览。HTTP 响应代码 200 表示该资源在该次检查时作出了应答，但 `image/png` 响应不同于 `application/javascript` 响应。

这些响应都不能证明已渲染的图像、永久的文件归档、再利用权利或持久的可用性。2026 年 10 月 13 日的小型元数据检查从 2 个账户保存了 2 条 `ok` 观察，但标头检查只证明了带日期的响应，而不是多次采集所形成的历史证据，也不是完整覆盖。下载资产和渲染预览不在此来源链接方法的范围之内。

## 追加后续批次并处理不可用的指针

追加后续批次，而不替换你较早的观察文件。当前展示可以显示每个身份对的最新观察，但它必须链接回历史记录。当旧指针失败时，保留它的来源记录，记录失败的检查，并在需要时于稍后的授权审查中检查公开来源页面。一个失败的指针，或一条因上限而缺失的观察，并不能证明某条广告已被删除。不要猜测 URL，也不要尝试恢复已删除的广告。因为没有进行重复运行或长期测试，所以该示例只传授保留方面的推理。

## 虚构示例与计数分析

此示例中的所有记录和 ID 都是虚构的。A/B/C1/C2 是教学标签，不是取自真实来源、专供检查使用的小型测试用例。没有下载任何媒体文件。

| 批次 | 广告主 | 创意 | 变体 | 链接情况 |
| --- | --- | --- | --- | --- |
| S1 | A | C1 | 2 | 媒体指针在虚构检查 2026年10月1日 12:05 UTC 时可用 |
| S1 | A | C2 | 1 | 预览指针在该次检查时可用 |
| S1 | B | C1 | 1 | 媒体指针在该次检查时可用 |
| S2 | A | C1 | 1 | 新指针在虚构检查 2026年10月2日 12:05 UTC 时可用；保留 S1 指针 |
| S2 | A | C2 | 1 | 指针在该次较晚的检查时不可用；保留该观察 |

此次采集产生 5 条观察行，计算方式为批次 S1 中的 3 行加上批次 S2 中的 2 行 (3 + 2 = 5)。有 3 个唯一的创意身份对：A:C1、A:C2 和 B:C1。把所有已保留行的变体计数相加，得到 6 条变体观察，计算方式为 2 加 1 加 1 加 1 加 1 (2 + 1 + 1 + 1 + 1 = 6)。这些变体观察是父记录中的子资产，不是 6 条唯一创意或单独的广告测试。

一个按身份取最新观察的视图包含 3 行，与 3 个唯一身份相符，其中有 2 次带日期的可用链接检查和 1 次不可用检查。广告主 B:C1 仍由其 S1 观察代表，而它未出现在批次 S2 中并不能证明广告已被删除。全部 5 条观察都必须保留在该库中。这种记录保留会保存证据记录和指针，而不声称完整的广告历史、永久的媒体文件存储、广告成功，或实际的重复运行测试结果。

公开可见并不授予一般性再利用许可 [Google 条款：其他内容](https://policies.google.com/terms?hl=en)。此方法保留来源记录和指针；下载或重新发布资产不在此来源链接工作流程之内。

## 下一个有用的 Actor 操作

打开 [Google Ads Transparency Scraper](https://apify.com/chronometrica/google-ads-transparency-scraper)，复制已发布的库任务，选择广告主身份，降低上限，并连同其清单一起保存已识别的观察。在将它们用于竞争对手报告之前先审查它们。

## 来源和延伸阅读

- [Google Ads Transparency Scraper](https://apify.com/chronometrica/google-ads-transparency-scraper)
- [Google Ads Creative Library Export | Ads Data](https://apify.com/chronometrica/google-ads-transparency-scraper/examples/google-ads-creative-library-export)
- [Google 广告透明度帮助](https://support.google.com/adspolicy/answer/13733850?hl=en-CA)
- [Google 条款：其他内容](https://policies.google.com/terms?hl=en)