通过上传 ID 使用 google 应用脚本删除上传到 GA 的文件
Deleting files uploaded to GA with google apps script by upload id
我正在尝试创建一个 Google Apps 脚本来删除上传到 GA 的旧文件,然后上传当前文件。
上传行和列出上传的行运行良好:
var upload = Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, blobData);
var request = Analytics.Management.Uploads.list(accountId, webPropertyId, customDataSourceId)
但是,我无法使上传删除工作。我尝试以下代码:
for (var k = 0; k <= request["items"].length - 1; k++) {
var customDataImportUid = request["items"][k]["id"]; //get the unique upload id
//delete the file with a specific upload id:
var deleteUpload = Analytics.Management.Uploads.deleteUploadData(
accountId, webPropertyId, customDataSourceId, customDataImportUid);
}
我收到错误:
GoogleJsonResponseException: Invalid value 'UA-xxxxxxxx-x'. Values must match the following regular expression: '\d+'.
似乎脚本试图使用 属性 ID 作为帐户 ID,所以我尝试了不同的方法:
for (var k = 0; k <= request["items"].length - 1; k++) {
var customDataImportUid = request["items"][k]["id"]; //get the unique upload id
//delete the file with a specific upload id:
var deleteUpload = Analytics.Management.Uploads.deleteUploadData(
0, accountId, webPropertyId, customDataSourceId, customDataImportUid);
}
然后得到错误:
Exception: Extra args block must be a javascript object literal.
两个问题:
- 为什么,如果我将 accountId 作为第一个参数传递,我会收到错误消息吗?
- 如何获得数据导入 ID 的正确参数?我如何将 ID 转换为 javascript 对象文字?
您的请求失败的原因是您的请求不正确:
如果我使用脚本编辑器开始编写我自己的函数,我会得到以下方法签名:
因此,该函数的第一个参数根本不应该是 0
或 accountId
。它需要是请求资源。
从documentation开始,应该是这样的:
{
'customDataImportUids': ['AAABBBCCCDDD111222',
'xLh4wXtzQT6uxe-_OWelog']
}
您的用法是将此参数作为最后一个参数,而不是第一个参数
请注意,该方法没有 return 任何内容,因此您的变量 deleteUpload
将是未定义的。重写,这变成:
myCustomDataImportUids = [];
for(var k = 0; k < request.items.length; ++k) {
myCustomDataImportUids.push(request.items[k].id);
}
// Delete them.
Analytics.Management.Uploads.deleteUploadData(
{customDataImportUids: myCustomDataImportUids},
accountId, webPropertyId, customDataSourceId
);
我正在尝试创建一个 Google Apps 脚本来删除上传到 GA 的旧文件,然后上传当前文件。
上传行和列出上传的行运行良好:
var upload = Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, blobData);
var request = Analytics.Management.Uploads.list(accountId, webPropertyId, customDataSourceId)
但是,我无法使上传删除工作。我尝试以下代码:
for (var k = 0; k <= request["items"].length - 1; k++) {
var customDataImportUid = request["items"][k]["id"]; //get the unique upload id
//delete the file with a specific upload id:
var deleteUpload = Analytics.Management.Uploads.deleteUploadData(
accountId, webPropertyId, customDataSourceId, customDataImportUid);
}
我收到错误:
GoogleJsonResponseException: Invalid value 'UA-xxxxxxxx-x'. Values must match the following regular expression: '\d+'.
似乎脚本试图使用 属性 ID 作为帐户 ID,所以我尝试了不同的方法:
for (var k = 0; k <= request["items"].length - 1; k++) {
var customDataImportUid = request["items"][k]["id"]; //get the unique upload id
//delete the file with a specific upload id:
var deleteUpload = Analytics.Management.Uploads.deleteUploadData(
0, accountId, webPropertyId, customDataSourceId, customDataImportUid);
}
然后得到错误:
Exception: Extra args block must be a javascript object literal.
两个问题:
- 为什么,如果我将 accountId 作为第一个参数传递,我会收到错误消息吗?
- 如何获得数据导入 ID 的正确参数?我如何将 ID 转换为 javascript 对象文字?
您的请求失败的原因是您的请求不正确:
如果我使用脚本编辑器开始编写我自己的函数,我会得到以下方法签名:
因此,该函数的第一个参数根本不应该是 0
或 accountId
。它需要是请求资源。
从documentation开始,应该是这样的:
{
'customDataImportUids': ['AAABBBCCCDDD111222',
'xLh4wXtzQT6uxe-_OWelog']
}
您的用法是将此参数作为最后一个参数,而不是第一个参数
请注意,该方法没有 return 任何内容,因此您的变量 deleteUpload
将是未定义的。重写,这变成:
myCustomDataImportUids = [];
for(var k = 0; k < request.items.length; ++k) {
myCustomDataImportUids.push(request.items[k].id);
}
// Delete them.
Analytics.Management.Uploads.deleteUploadData(
{customDataImportUids: myCustomDataImportUids},
accountId, webPropertyId, customDataSourceId
);