google-analytics
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoogle Analytics
Google Analytics
Architecture
架构
ga4- Data API (v1beta + v1alpha) — — reporting, realtime, metadata, funnels, audience exports
ga4 data … - Admin API (v1beta + v1alpha) — — accounts, properties, streams, key events, custom dims/metrics, measurement secrets, links, audiences, access bindings, annotations
ga4 admin … - Measurement Protocol — — event ingestion (send + validate against debug endpoint)
ga4 mp …
All commands emit JSON to stdout with . Errors go to stderr as plain text with exit 1. Destructive operations require on the CLI; the skill adds an additional user-confirmation layer (see Destructive operations below).
indent=2--yes/-yAuth is OAuth-user-only via . The CLI owns its own state at (not under the skill's path — is usable outside this skill).
ga4 auth login --client-secret <Desktop-OAuth-client.json>~/.config/skills/ga4/ga4ga4- Data API(v1beta + v1alpha)————报表、实时数据、元数据、漏斗、受众导出
ga4 data … - Admin API(v1beta + v1alpha)————账号、媒体资源、数据流、关键事件、自定义维度/指标、测量密钥、链接、受众、访问绑定、注释
ga4 admin … - Measurement Protocol————事件采集(发送+通过调试端点验证)
ga4 mp …
所有命令会将JSON格式的输出发送至标准输出,缩进为2。错误信息以纯文本形式发送至标准错误输出,退出码为1。破坏性操作需要在CLI中添加参数;本技能还额外增加了用户确认环节(详见下方破坏性操作部分)。
--yes/-y认证仅支持通过进行OAuth用户认证。CLI的状态信息存储在目录下(不在技能路径下——可在本技能之外独立使用)。
ga4 auth login --client-secret <Desktop-OAuth-client.json>~/.config/skills/ga4/ga4Before First Use
首次使用前准备
- Install —
uv sync --project /abs/path/to/skills/google-analytics - Create an OAuth Desktop client in GCP — https://console.cloud.google.com/apis/credentials → Create Credentials → OAuth client ID → Desktop app → download the JSON. ADC () is deliberately not supported — Google is phasing out analytics scopes on the default gcloud client ID.
gcloud auth application-default login - Auth — . A browser opens for consent. On a headless machine, open an SSH tunnel first:
ga4 auth login --client-secret /path/to/downloaded.jsonand open the printed URL on a machine with a browser. Scopes default to readonly + edit + manage-users; override withssh -L 8086:localhost:8086 <this-host>(repeatable) for provision / user-deletion.--scope - Grant GA access — in GA Admin → Access Management, add the Google account you just authed with as Viewer (reads) or Editor/Administrator (writes, user management). See for click-path.
references/setup.md - Default property (optional, recommended) — .
ga4 config set-property 123456789 - Verify — should be all-green.
ga4 doctor
- 安装 —
uv sync --project /abs/path/to/skills/google-analytics - 在GCP中创建OAuth桌面客户端 — https://console.cloud.google.com/apis/credentials → 创建凭据 → OAuth客户端ID → 桌面应用 → 下载JSON文件。ADC()未被支持——Google正逐步淘汰默认gcloud客户端ID的分析权限范围。
gcloud auth application-default login - 认证 — 。会打开浏览器进行授权。在无头机器上,需先建立SSH隧道:
ga4 auth login --client-secret /path/to/downloaded.json,然后在有浏览器的机器上打开打印出的URL。默认权限范围为只读+编辑+用户管理;如需资源配置/用户删除,可通过ssh -L 8086:localhost:8086 <this-host>参数(可重复使用)覆盖默认范围。--scope - 授予GA访问权限 — 在GA管理后台 → 访问管理中,将刚完成认证的Google账号添加为查看者(只读)或编辑者/管理员(可写入、管理用户)。点击路径详情可查看。
references/setup.md - 默认媒体资源(可选,推荐设置) — 。
ga4 config set-property 123456789 - 验证 — 应显示全绿状态。
ga4 doctor
Canonical invocation
标准调用方式
bash
uv run --project /path/to/skills/google-analytics ga4 <command> [args]For brevity, examples below use directly. When running from outside the skill directory, always use the full form.
ga4uv run --project <abs-path>bash
uv run --project /path/to/skills/google-analytics ga4 <command> [args]为简洁起见,以下示例直接使用。在技能目录外运行时,请始终使用完整的格式。
ga4uv run --project <abs-path>Destructive operations
破坏性操作
Before running any or subcommand, show the user the exact command (including target resource name) and ask for confirmation in conversation. Only pass after an affirmative answer in the current turn. Never chain multiple destructive ops without re-confirming each one.
deletearchive--yes/-yThe CLI's flag is a non-interactive guardrail. The skill's job is to make sure a human explicitly agrees before a , , , , , , , , , , , , , , or is executed. If the user is in a hurry, still ask — a single clear confirmation is cheap compared to clobbering a production property.
--yesproperties deletekey-events deletecustom-dimensions archivecustom-metrics archiveaudiences archiveaccess-bindings deleteaccess-bindings batch-deleteannotations deletedata-streams deletemeasurement-secrets deletelinks firebase-deletelinks ads-deletelinks bigquery-deleteproperties submit-user-deletionaccounts delete在运行任何或子命令前,需向用户展示精确的命令(包括目标资源名称)并请求对话确认。仅在当前对话中得到肯定答复后,才可添加参数。切勿在未逐一确认的情况下链式执行多个破坏性操作。
deletearchive--yes/-yCLI的标志是非交互式防护机制。本技能的职责是确保在执行、、、、、、、、、、、、、或前,得到人类用户的明确同意。即使用户赶时间,也需进行确认——一次清晰的确认相比破坏生产环境媒体资源的代价要小得多。
--yesproperties deletekey-events deletecustom-dimensions archivecustom-metrics archiveaudiences archiveaccess-bindings deleteaccess-bindings batch-deleteannotations deletedata-streams deletemeasurement-secrets deletelinks firebase-deletelinks ads-deletelinks bigquery-deleteproperties submit-user-deletionaccounts deleteCommand index
命令索引
ga4 auth
, ga4 config
, ga4 doctor
ga4 authga4 configga4 doctorga4 auth
、ga4 config
、ga4 doctor
ga4 authga4 configga4 doctor| Command | Purpose | Min scope |
|---|---|---|
| OAuth Desktop flow | n/a |
| Report OAuth credential status | n/a |
| Scopes and expiry on the current token | readonly |
| Remove OAuth credentials | n/a |
| Persist default property (stored as | n/a |
| Read default | n/a |
| Dump all config | n/a |
| Health check (config, OAuth credentials, scopes, Admin API ping) | readonly |
Property ids accept either or .
123456789properties/123456789| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| OAuth桌面授权流程 | n/a |
| 报告OAuth凭证状态 | n/a |
| 当前令牌的权限范围和过期时间 | readonly |
| 删除OAuth凭证 | n/a |
| 持久化默认媒体资源(存储格式为 | n/a |
| 读取默认媒体资源 | n/a |
| 导出所有配置 | n/a |
| 健康检查(配置、OAuth凭证、权限范围、Admin API连通性) | readonly |
媒体资源ID支持或两种格式。
123456789properties/123456789ga4 data
— Data API
ga4 dataga4 data
— Data API
ga4 data| Command | Purpose | Min scope |
|---|---|---|
| Standard report | readonly |
| Pivot report | readonly |
| Up to 5 reports in one call | readonly |
| Up to 5 pivot reports | readonly |
| Last 30 (or 60 for GA360) minutes | readonly |
| Funnel analysis. Alpha. | readonly |
| Validate dim+metric combo | readonly |
| Dimensions + metrics catalog for the property (pass | readonly |
| Create audience export | readonly |
| Audience export lifecycle | readonly |
Common flags: , , , , , , , , , , , (full body override).
run-report--dimension-filter-json--metric-filter-json--order-by-json--metric-aggregation--cohort-spec-json--comparisons-json--limit--offset--currency-code--keep-empty-rows--return-property-quota--request-jsonFilter/order/cohort JSON can be inline () or a file (). See for the filter grammar.
--dimension-filter-json '{"filter":...}'--dimension-filter-json @/tmp/f.jsonreferences/data-api.md| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 标准报表 | readonly |
| 透视报表 | readonly |
| 单次调用最多生成5个报表 | readonly |
| 单次调用最多生成5个透视报表 | readonly |
| 最近30分钟(GA360为60分钟)的实时数据 | readonly |
| 漏斗分析。Alpha版本。 | readonly |
| 验证维度+指标组合的兼容性 | readonly |
| 获取媒体资源的维度+指标目录(传入 | readonly |
| 创建受众导出任务 | readonly |
| 受众导出任务生命周期管理 | readonly |
run-report--dimension-filter-json--metric-filter-json--order-by-json--metric-aggregation--cohort-spec-json--comparisons-json--limit--offset--currency-code--keep-empty-rows--return-property-quota--request-json过滤/排序/同期群JSON可以是内联格式()或文件路径()。过滤语法详情请查看。
--dimension-filter-json '{"filter":...}'--dimension-filter-json @/tmp/f.jsonreferences/data-api.mdga4 admin accounts
— Accounts
ga4 admin accountsga4 admin accounts
— 账号管理
ga4 admin accounts| Command | Purpose | Min scope |
|---|---|---|
| Read accounts | readonly |
| Rename | edit |
| Soft-delete | edit |
| Audit trail | readonly |
| Who-accessed-what audit | readonly |
| Read sharing settings | readonly |
| New-account provisioning ticket | edit |
| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 读取账号信息 | readonly |
| 修改账号名称 | edit |
| 软删除账号 | edit |
| 审计追踪 | readonly |
| 访问行为审计(谁访问了什么) | readonly |
| 读取数据共享设置 | readonly |
| 新账号配置工单 | edit |
ga4 admin properties
— Properties
ga4 admin propertiesga4 admin properties
— 媒体资源管理
ga4 admin properties| Command | Purpose | Min scope |
|---|---|---|
| Read properties | readonly |
| Create | edit |
| Update (or | edit |
| Soft-delete | edit |
| Retention settings | edit |
| Attribution model. Alpha. | edit |
| Google Signals. Alpha. | edit |
| Access audit at property scope | readonly |
| Change history | readonly |
| Prereq for Measurement Protocol secrets | edit |
| GDPR deletion. Alpha. Irreversible. | user.deletion |
| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 读取媒体资源信息 | readonly |
| 创建媒体资源 | edit |
| 更新媒体资源(或使用 | edit |
| 软删除媒体资源 | edit |
| 数据保留设置 | edit |
| 归因模型。Alpha版本。 | edit |
| Google Signals设置。Alpha版本。 | edit |
| 媒体资源级别的访问审计 | readonly |
| 变更历史 | readonly |
| Measurement Protocol密钥的前置要求 | edit |
| GDPR用户数据删除。Alpha版本。不可撤销。 | user.deletion |
ga4 admin data-streams
, measurement-secrets
ga4 admin data-streamsmeasurement-secretsga4 admin data-streams
、measurement-secrets
ga4 admin data-streamsmeasurement-secrets| Command | Purpose | Min scope |
|---|---|---|
| Read streams | readonly |
| Create web stream | edit |
| Android | edit |
| iOS | edit |
| Rename | edit |
| Delete | edit |
| gtag snippet. Alpha. | readonly |
| EM settings. Alpha. | edit |
| PII redaction. Alpha. | edit |
| MP secrets CRUD (requires | edit |
| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 读取数据流信息 | readonly |
| 创建网页数据流 | edit |
| 创建Android应用数据流 | edit |
| 创建iOS应用数据流 | edit |
| 修改数据流名称 | edit |
| 删除数据流 | edit |
| gtag代码片段。Alpha版本。 | readonly |
| 增强型测量设置。Alpha版本。 | edit |
| PII脱敏设置。Alpha版本。 | edit |
| MP密钥增删改查(需先完成 | edit |
ga4 admin key-events
, custom-dimensions
, custom-metrics
ga4 admin key-eventscustom-dimensionscustom-metricsga4 admin key-events
、custom-dimensions
、custom-metrics
ga4 admin key-eventscustom-dimensionscustom-metrics| Command | Purpose | Min scope |
|---|---|---|
| Conversion events (replaces | edit |
| Custom dims | edit |
| Custom metrics | edit |
| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 转化事件管理(替代 | edit |
| 自定义维度管理 | edit |
| 自定义指标管理 | edit |
ga4 admin links
— Third-party links
ga4 admin linksga4 admin links
— 第三方链接管理
ga4 admin links| Command | Purpose | Min scope |
|---|---|---|
| Firebase links | edit |
| Google Ads links | edit |
| BigQuery links. Alpha. | edit |
| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| Firebase链接管理 | edit |
| Google Ads链接管理 | edit |
| BigQuery链接管理。Alpha版本。 | edit |
ga4 admin audiences
, access-bindings
, annotations
— all alpha
ga4 admin audiencesaccess-bindingsannotationsga4 admin audiences
、access-bindings
、annotations
— 均为Alpha版本
ga4 admin audiencesaccess-bindingsannotations| Command | Purpose | Min scope |
|---|---|---|
| Audiences. Alpha. | edit |
| Per-user roles. Alpha. | manage.users |
| Batch operations. Alpha. | manage.users |
| Reporting-data annotations. Alpha. | edit |
Alpha endpoints may change shape without notice; keep an eye on release notes if you script against them.
google-analytics-admin| 命令 | 用途 | 最低权限范围 |
|---|---|---|
| 受众管理。Alpha版本。 | edit |
| 按用户分配角色。Alpha版本。 | manage.users |
| 批量操作。Alpha版本。 | manage.users |
| 报表数据注释管理。Alpha版本。 | edit |
Alpha版本端点的格式可能会无预告变更;如果通过脚本调用这些端点,请关注的发布说明。
google-analytics-adminga4 mp
— Measurement Protocol
ga4 mpga4 mp
— Measurement Protocol
ga4 mp| Command | Purpose |
|---|---|
| Fire-and-forget send to |
| Debug endpoint — returns per-event validation findings |
Single-event shortcut: . For Firebase/app streams, replace with . routes through the EU regional endpoint.
--event-name purchase --event-params '{"value":12.34,"currency":"USD"}'--measurement-id--firebase-app-id--endpoint euMP limits (enforced locally before sending): 25 events/request, 40-char event names, 25 params/event. See for full limits including param value length.
references/admin-api.md| 命令 | 用途 |
|---|---|
| 无回调发送事件至 |
| 通过调试端点验证——返回每个事件的验证结果 |
单事件快捷方式:。对于Firebase/应用数据流,将替换为。参数可将请求路由至欧盟区域端点。
--event-name purchase --event-params '{"value":12.34,"currency":"USD"}'--measurement-id--firebase-app-id--endpoint euMP限制(发送前本地校验):每个请求最多25个事件,事件名称最多40字符,每个事件最多25个参数。完整限制(包括参数值长度)请查看。
references/admin-api.mdWriting reports
报表编写示例
bash
undefinedbash
undefinedLast 7 days of active users by country
过去7天按国家统计的活跃用户数
ga4 data run-report -p 123456789 -d country -m activeUsers -s 7daysAgo -e today
ga4 data run-report -p 123456789 -d country -m activeUsers -s 7daysAgo -e today
Week-over-week comparison with two date ranges via request JSON
通过请求JSON实现周环比对比(两个日期范围)
cat <<'EOF' > /tmp/wow.json
{
"dimensions": [{"name": "deviceCategory"}],
"metrics": [{"name": "engagementRate"}, {"name": "sessions"}],
"date_ranges": [
{"start_date": "7daysAgo", "end_date": "yesterday", "name": "this_week"},
{"start_date": "14daysAgo", "end_date": "8daysAgo", "name": "last_week"}
]
}
EOF
ga4 data run-report -p 123456789 --request-json @/tmp/wow.json
cat <<'EOF' > /tmp/wow.json
{
"dimensions": [{"name": "deviceCategory"}],
"metrics": [{"name": "engagementRate"}, {"name": "sessions"}],
"date_ranges": [
{"start_date": "7daysAgo", "end_date": "yesterday", "name": "this_week"},
{"start_date": "14daysAgo", "end_date": "8daysAgo", "name": "last_week"}
]
}
EOF
ga4 data run-report -p 123456789 --request-json @/tmp/wow.json
Filter: only mobile, only pages matching /blog/*
过滤条件:仅移动端,仅路径匹配/blog/*的页面
cat <<'EOF' > /tmp/filter.json
{"andGroup": {"expressions": [
{"filter": {"fieldName": "deviceCategory", "stringFilter": {"value": "mobile"}}},
{"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "BEGINS_WITH", "value": "/blog/"}}}
]}}
EOF
ga4 data run-report -p 123456789 -d pagePath -m sessions -s 7daysAgo -e today
--dimension-filter-json @/tmp/filter.json
--dimension-filter-json @/tmp/filter.json
For deep filter grammar (AND/OR/NOT, string/numeric/between/in-list filter types), the valid metric-aggregation set, cohort specs, and the "quota token" math, read `references/data-api.md`.cat <<'EOF' > /tmp/filter.json
{"andGroup": {"expressions": [
{"filter": {"fieldName": "deviceCategory", "stringFilter": {"value": "mobile"}}},
{"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "BEGINS_WITH", "value": "/blog/"}}}
]}}
EOF
ga4 data run-report -p 123456789 -d pagePath -m sessions -s 7daysAgo -e today
--dimension-filter-json @/tmp/filter.json
--dimension-filter-json @/tmp/filter.json
关于复杂过滤语法(AND/OR/NOT、字符串/数值/范围/列表过滤类型)、有效的指标聚合集合、同期群规则以及“配额令牌”计算,请阅读`references/data-api.md`。Admin safety
管理安全注意事项
- Always /
listfirst beforeget/update/delete. Validate you're targeting the right resource.archive - Use to audit recent changes before making new ones, and to find who made the last change to a resource.
search-change-history - Alpha endpoints may change shape. If you get an unexpected schema error, check the package version and the alpha changelog.
google-analytics-admin - — most admin updates require a field mask. The CLI auto-computes it from flag-based updates, but for
update_maskupdates you must pass--body-jsonexplicitly.--update-mask - Scopes — the CLI requests the union of scopes its commands need. If a command 403s with "insufficient permissions", re-auth with a broader scope (see Before First Use).
- 更新/删除/归档前务必先执行list/get。确认目标资源正确无误。
- 使用search-change-history:在进行新变更前审计最近的更改记录,查看谁最后修改了该资源。
- Alpha版本端点格式可能变更。如果遇到意外的架构错误,请检查包版本和Alpha版本更新日志。
google-analytics-admin - update_mask:大多数管理更新需要字段掩码。CLI会根据参数自动计算掩码,但使用更新时,必须显式传入
--body-json参数。--update-mask - 权限范围:CLI会请求其所有命令所需的权限范围集合。如果命令返回403“权限不足”错误,请使用更广泛的权限范围重新认证(详见首次使用前准备)。
Funnel / audience / access patterns
漏斗/受众/访问模式
- Funnels () are built as an array of steps, each with a filter expression. The response has two sub-reports — funnel table and funnel visualization. See
run-funnel-reportfor step-design patterns (sequential vs. any-order steps, breakdown dimensions, continuous vs. direct).references/data-api.md - Audiences () have a deeply nested schema (filter clauses, scopes, sequences). Build the JSON separately and pass
audiences create. Start from an existing audience (--body-json @audience.json) to see the shape.audiences get - Access bindings use role names. Common:
predefinedRoles/*,predefinedRoles/no-cost-data,predefinedRoles/read-and-analyze,predefinedRoles/editor. Changes at account scope apply to all properties.predefinedRoles/admin
- 漏斗(run-funnel-report):由一系列步骤组成,每个步骤带有过滤表达式。响应包含两个子报表——漏斗表格和漏斗可视化。步骤设计模式(顺序/任意顺序步骤、细分维度、连续/直接转化)请查看。
references/data-api.md - 受众(audiences create):具有深度嵌套的架构(过滤规则、范围、序列)。请单独构建JSON文件,然后通过传入。可从现有受众(
--body-json @audience.json)获取格式模板。audiences get - 访问绑定:使用角色名称。常用角色:
predefinedRoles/*、predefinedRoles/no-cost-data、predefinedRoles/read-and-analyze、predefinedRoles/editor。账号级别的变更会应用到所有媒体资源。predefinedRoles/admin
Interpreting output
输出解读
Engagement benchmarks, attribution model differences, funnel drop-off heuristics, audience sequence vs. condition patterns, realtime reporting caveats, and BigQuery long-term-storage tradeoffs are all in . Read it before drawing conclusions about whether numbers are "good" — GA4's sampling and attribution defaults differ meaningfully from UA and from other analytics tools.
references/playbook.md互动基准、归因模型差异、漏斗流失分析、受众序列与条件模式、实时报表注意事项以及BigQuery长期存储权衡等内容均收录于。在判断数据是否“良好”前,请先阅读该文档——GA4的抽样和归因默认设置与UA及其他分析工具存在显著差异。
references/playbook.mdTroubleshooting
故障排查
- "No credentials. Run: ga4 auth login …" — Exactly what it says. Get a Desktop OAuth client JSON from GCP and log in.
- "Permission denied" — The Google account you auth'd with doesn't have GA access. Grant Viewer/Editor in GA Admin → Access Management. Verify with .
ga4 admin accounts summaries-list - "Quota exhausted" — Pass on a report to see live consumption. Data API tokens reset hourly/daily. GA360 gets 10x limits.
--return-property-quota - "insufficient_scope" — The stored token was obtained with fewer scopes than this command needs. Re-run (repeatable) to include them.
ga4 auth login --client-secret <path> --scope <extra-scope> - "No property id" — Pass , set
--property/-p, orGA_PROPERTY_ID.ga4 config set-property <id> - Alpha schema changed — Pin and
google-analytics-adminingoogle-analytics-data, thenpyproject.toml.uv sync - Realtime report is empty — The realtime window is only the last 30 minutes (60 for GA360). If there's genuinely no active traffic, the report will be empty; this is correct.
- MP send returned 2xx but the event didn't appear — always returns 2xx regardless of validity. Use
mp sendfirst to check for rejection reasons.mp validate
- “No credentials. Run: ga4 auth login …” — 字面意思,需从GCP获取桌面OAuth客户端JSON文件并完成登录。
- “Permission denied” — 完成认证的Google账号没有GA访问权限。在GA管理后台 → 访问管理中授予查看者/编辑者权限。可通过验证。
ga4 admin accounts summaries-list - “Quota exhausted” — 在报表命令中添加参数查看实时配额消耗情况。Data API令牌每小时/每日重置。GA360的配额是普通版本的10倍。
--return-property-quota - “insufficient_scope” — 存储的令牌权限范围不足以执行当前命令。重新运行(可重复添加)以包含所需权限。
ga4 auth login --client-secret <path> --scope <extra-scope> - “No property id” — 传入参数、设置
--property/-p环境变量或执行GA_PROPERTY_ID设置默认媒体资源。ga4 config set-property <id> - Alpha版本架构变更 — 在中固定
pyproject.toml和google-analytics-admin的版本,然后执行google-analytics-data。uv sync - 实时报表为空 — 实时数据窗口仅包含最近30分钟(GA360为60分钟)。如果确实没有活跃流量,报表为空是正常现象。
- MP发送返回2xx但事件未显示 — 无论事件是否有效都会返回2xx。请先使用
mp send检查拒绝原因。mp validate
Configuration files
配置文件
- — default property and other CLI settings
~/.config/skills/ga4/config.json - — OAuth user creds (written by
~/.config/skills/ga4/credentials.json)ga4 auth login - Override the config dir with
GA4_CONFIG_DIR=/path/to/dir
- — 默认媒体资源及其他CLI设置
~/.config/skills/ga4/config.json - — OAuth用户凭证(由
~/.config/skills/ga4/credentials.json生成)ga4 auth login - 可通过覆盖配置目录
GA4_CONFIG_DIR=/path/to/dir
Migrating from earlier versions
从旧版本迁移
If upgrading from a build that stored config at , run to move the credentials and config to the new location. emits a until the migration runs.
~/.config/ga4/ga4 config migrate --applyga4 auth statusdeprecation_warning如果从配置存储在的版本升级,请执行将凭证和配置迁移到新目录。在完成迁移前,会输出警告。
~/.config/ga4/ga4 config migrate --applyga4 auth statusdeprecation_warning