通过包含/排除多个 pagePaths 的 API 批量创建 AdWords 受众

Posted

技术标签:

【中文标题】通过包含/排除多个 pagePaths 的 API 批量创建 AdWords 受众【英文标题】:Bulk AdWords audience creation via API with including/expluding multiple pagePaths 【发布时间】:2017-04-25 10:30:53 【问题描述】:

我的目标是使用 Google 电子表格中的数据作为参数,从 Google Analytics 统计数据中批量创建 AdWords 再营销受众。

我的代码基于这个article。

API 连接似乎工作正常。正在创建受众,但我在指定应根据 ga:pagePath 包含/排除受众的细分参数时遇到问题。

所以我的问题是:

我做错了什么? 谁能给点提示或建议如何让它发挥作用?

电子表格表格

| Audience Name | URL include 1 | URL include 2 | URL include 3 | URL exclude 1 | URL exclude 2 | URL exclude 3 | Duration |
|---------------|---------------|---------------|---------------|---------------|---------------|---------------|----------|
| Test 1        | /test         | /test2        |               |               |               |               | 540      |
|---------------|---------------|---------------|---------------|---------------|---------------|---------------|----------|
| Test 2        | /test3        | /test4        |               |               |               |               | 540      |
|---------------|---------------|---------------|---------------|---------------|---------------|---------------|----------|

电子表格宏脚本

function main() 

  var settings = 'linkedView':"XXXXXXXXX",
                  'linkedAccountId':"XXX-XXX-XXXX",
                  'accountId':'XXXXXXXX',
                  'propertyID':'UA-XXXXXXXX-X';

  var spreadsheet = SpreadsheetApp.openByUrl('XXXXXX');
  var sheet = spreadsheet.getSheetByName('test');
  var range = sheet.getRange(2, 1, sheet.getLastRow(), 8);
  var values = range.getValues();

  for(var i = 0; i < values.length; i++) 
    var name = values[i][0];
    var categoryUrl = values[i][1];
    var duration = Math.floor(values[i][7]);

    Logger.log(duration);

    var inludeSegment = '';
    var exludeSegment = '';

    if(values[i][1]) 
      inludeSegment += 'users::condition::ga:pagePath=@'+ values[i][1];
    
    /*
    if(values[i][2]) 
      inludeSegment += ';ga:pagePath==' + values[i][2];
    

    if(values[i][3]) 
      inludeSegment += ';ga:pagePath==' + values[i][3];
    

    if(values[i][4]) 
      exludeSegment += 'sessions::condition::ga:pagePath==' + values[i][4];
    

    if(values[i][5]) 
      exludeSegment += ';ga:pagePath==' + values[i][5];
    

    if(values[i][6]) 
      exludeSegment += ';ga:pagePath==' + values[i][6];
    */

    var newAudience = Analytics.Management.RemarketingAudience.insert(
      
        'name': name,
        'linkedViews': [settings.linkedView],
        'linkedAdAccounts': [
            'type': 'ADWORDS_LINKS',
            'linkedAccountId': settings.linkedAccountId,
        ],
        'description' : 'test',
        'audienceType': 'SIMPLE',
        'audienceDefinition': 
          'includeConditions': 
            'daysToLookBack': 14,
            'segment': inludeSegment,
            'membershipDurationDays': duration,
            'isSmartList': false
          
        
      ,
    settings.accountId,
    settings.propertyID
    );

    Logger.log(newAudience);

   Logger.log(i + ' Audience ' + name + ' has been created');
  ;

【问题讨论】:

【参考方案1】:

我发现您对细分定义有疑问。

https://developers.google.com/analytics/devguides/reporting/core/v3/segments-feature-reference

这篇文章对你有帮助。

因为当你使用 ';'在 pagePathes 之间意味着会话必须同时包含两者。 users::condition::ga:pagePath=@/category1;ga:pagePath=@/category2

此段将收集所有访问2个类别的用户。

如果我们使用 ',' users::condition::ga:pagePath=@/category1**,**ga:pagePath=@/category2

此段将收集来自 1 和 2 类别的所有用户,即使用户只访问过一个。

你应该使用'!'从段中排除某些内容

sessions::condition::**!**ga:exitPagePath==/

希望对你有帮助!

【讨论】:

以上是关于通过包含/排除多个 pagePaths 的 API 批量创建 AdWords 受众的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 autoconf/automake 排除 boost 库/头文件包含问题?

微信公众号菜单添加小程序,miniprogram,pagepath参数详解,php开发公众号

TFS API 待处理项目、排除列表、包含列表

全文搜索,包含多个确切的短语和排除项

类路径包含多个 SLF4J 绑定,即使有排除项

通过 DocuSign Rest API 创建 DocuSign 信封时出错(包含多个文档和多个收件人)