通过上传 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.

两个问题:

  1. 为什么,如果我将 accountId 作为第一个参数传递,我会收到错误消息吗?
  2. 如何获得数据导入 ID 的正确参数?我如何将 ID 转换为 javascript 对象文字?

您的请求失败的原因是您的请求不正确:

如果我使用脚本编辑器开始编写我自己的函数,我会得到以下方法签名:

因此,该函数的第一个参数根本不应该是 0accountId。它需要是请求资源。 从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
);