将客户电子邮件列表上传到Google Ads Management API

时间:2018-11-22 09:01:37

标签: java google-api google-analytics-api google-api-java-client

我正在尝试使用this指南上传客户哈希电子邮件列表,这是我的代码。

File file = new File("/customerMatchHashed.csv");
InputStreamContent mediaContent = new InputStreamContent("application/octet-stream",
    new FileInputStream(file));
mediaContent.setLength(file.length());

try {
  Analytics analytics = initializeAnalytics();
  analytics.management().uploads().uploadData("AccountIdHere",
      "UA-123456-1", "1223334444", mediaContent).execute();
} catch (GoogleJsonResponseException e) {
  System.err.println("There was a service error: "
      +  e.getDetails().getCode() + " : "
      +  e.getDetails().getMessage());
}

我一直遇到这个错误。

  

服务错误:400:无效的自定义数据源ID格式:xxxxx。

该错误是不言自明的,但我不知道从何处获取此custom data source ID(应该是字符串),因为我在Google Analytics(分析)控制台中看不到任何此类错误。同样,web property Id也是一个字符串,但在控制台中看不到它。 对于从何处获取这两个属性的任何帮助/指导,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您应该做的第一件事是accountSummaries.list。这将为您提供当前经过身份验证的用户有权访问的所有帐户的列表。

AccountSummaries accountSummaries = service.management().accountSummaries().list().execute();

然后,您在Google Analytics(分析)管理部分中找到具有网络载体的帐户,并在其中设置了data import。您可以运行custom data sources list,它将返回为该帐户设置的所有自定义数据源。

CustomDataSources sources = analytics.management().customDataSources().list(AccountIdFromPreviousRequest, WebpropertyIdFromPreviousReqeust).execute();

然后您可以使用上传中返回的ID

analytics.management().uploads().uploadData(AccountIdFromFirstRequest,
                                            WebpropertyIdFromFirstReqeust,                                                
                                           customDataSourcesFromPrevousRequest,
                                           mediaContent).execute();