创建广告并分配创意和展示位置

Create Ad and assign creative and placement

我在 Campaign Manager 中有一个广告系列。 广告系列中有 1 个展示位置和 1 个广告素材(160x600 和有效)

我想制作一个广告,分配广告素材,然后使用 Google 表格中的 Google Apps 脚本分配展示位置。

我已经使用 Google Apps 脚本中的 API 参考构建了广告资源。 如果广告设置为 "inactive",我可以获得它来创建广告。但是,none 的作业已完成。

当我尝试创建广告并将其设置为 "Active" 时,出现错误:

"API call to dfareporting.ads.insert failed with error: 12032 : An ad cannot be active unless it is assigned to at least one placement."

偶尔我有时也会得到这个:

"API call to dfareporting.ads.insert failed with error: 12058 : At least one active creative must be assigned to any active ad. Also, the creative must have "Include in rotation" set to "Yes" in your ad properties."

代码如下:

funtion foo() { 
   var startTime = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\'');
  var endDate = new Date (new Date(startTime).getYear()+1, new Date(startTime).getMonth(), new Date(startTime).getDate());
  var endTime = Utilities.formatDate(new Date(endDate), ss.getSpreadsheetTimeZone(), 'yyyy-MM-dd\'T\'HH:mm:ss.SSS\'Z\'');

      var adResource = {
        "kind": "dfareporting#ad",
        "active": "true",
        "archived": "false",
        "campaignId": "23237909",
        "name": "testApiAd",
        "creativeRotation": {
          "creativeAssignments": {
            "active": "true",
            "creativeId": "121312158",//.toString(),
            "clickThroughUrl": {
              "defaultLandingPage": "true",
              //"type": "CREATIVE_ROTATION_TYPE_RANDOM",
              //"weightCalculationStrategy": "WEIGHT_STRATEGY_EQUAL"
            }
          }
        },
        "deliverySchedule": {
          "impressionRatio": "1",
          "priority": "AD_PRIORITY_15",
          "hardCutoff": "false"
        },
        "endTime": endTime,
        "startTime": startTime,
        "type": "AD_SERVING_STANDARD_AD",
        "placementAssignments": {
          "active": "true",
          "placementId": "256185010",//.toString(),
          //"sslRequired": "true"
        }
      }

      var newAd = DoubleClickCampaigns.Ads.insert(adResource, profileID);
  return newAd;
}

有什么我不明白的地方吗?还是完全缺失? 根据 API 参考资料,它应该可以工作,但我不明白为什么不行。

如有任何帮助,我们将不胜感激。

问题

active 标志设置为 true 的广告应至少设置一个 placementAssignments

解决方案

看看 placementAssignments(以及 creativeAssignments)的 type 属性 - 它应该是 list(意味着该值应该是 Array 的一个实例),而您将其定义为 object。只需制作 Array:

的展示位置和创意元素
"placementAssignments": [{
  "active": "true",
  "placementId": "256185010",//.toString(),
  //"sslRequired": "true"
}]

"creativeRotation": {
  "creativeAssignments": [{
    "active": "true",
    "creativeId": "121312158",//.toString(),
    "clickThroughUrl": {
      "defaultLandingPage": "true",
      //"type": "CREATIVE_ROTATION_TYPE_RANDOM",
      //"weightCalculationStrategy": "WEIGHT_STRATEGY_EQUAL"
    }
  }]
 }

参考

  1. ad 资源 overview;