如何解决Google Apps Script删除GA上传文件的格式匹配错误?
解决Google Analytics上传文件删除失败的问题
嘿,我刚好碰到过类似的坑,来给你捋捋怎么搞定!
你遇到的GoogleJsonResponseException: Invalid value 'UA-xxxxxxxx-x'. Values must match the following regular expression: '\d+'错误,核心原因就是把GA的属性ID当成账户ID传给API了——GA管理API里,不同操作对ID的要求是完全不一样的:
先搞清楚两个关键ID的区别
- 账户ID:纯数字格式(比如
12345678),是你GA账户的顶级ID,在后台「管理」页面的第一个下拉菜单里就能看到。 - 属性ID:就是你用的
UA-xxxxxxxx-x(旧版UA)或者G-xxxxxxx(GA4),属于账户下的子属性ID。
修正你的删除代码
你之前的删除调用肯定是把UA-xxx填到了需要账户ID的参数位置,改成纯数字的账户ID就好。举个正确的代码示例:
// 先定义正确的ID const GA_ACCOUNT_ID = "12345678"; // 替换成你的纯数字账户ID const GA_PROPERTY_ID = "UA-xxxxxxxx-x"; // 你的属性ID(保持不变) const DATA_SOURCE_ID = "你的数据源ID"; // 上传文件对应的数据源ID const UPLOAD_RECORD_ID = "要删除的上传记录ID"; // 目标上传记录的ID // 正确调用删除接口 function deleteOldUpload() { try { Analytics.Management.Uploads.deleteUploadData( GA_ACCOUNT_ID, GA_PROPERTY_ID, DATA_SOURCE_ID, UPLOAD_RECORD_ID ); console.log("旧上传文件删除成功!"); } catch (e) { console.error("删除失败:", e.message); } }
找不到账户ID?用脚本自动获取
如果你记不清账户ID,直接跑这个小脚本就能在日志里看到:
function listGAAccounts() { const accounts = Analytics.Management.Accounts.list(); if (accounts.items && accounts.items.length > 0) { accounts.items.forEach(account => { console.log(`账户名称:${account.name},账户ID:${account.id}`); }); } else { console.log("未找到GA账户,请检查授权是否正确"); } }
运行后打开「查看」->「日志」就能拿到你的纯数字账户ID啦。
额外提醒
如果是GA4的话,删除上传数据的API接口和UA不一样,得用AnalyticsAdmin或者AnalyticsData相关的方法,但看你的错误提示是UA的格式,所以上面的方案应该完全适用。
内容的提问来源于stack exchange,提问作者codeless
相关产品推荐
相关产品推荐

