Google Ads API is returning to beta status. Please read our blog post for more details.

创建酒店信息组

通过酒店广告组,您可以将自己的酒店按照多个维度划分为多个酒店信息组,这样就可以相应地调整每个组的出价。分组时,请考虑使用这样的树状结构:在第一级,将酒店大致划分为五星级酒店、四星级酒店和其他星级酒店;然后在第二级,将其他星级的酒店划分为“美国”酒店、“英国”酒店和其他地区的酒店。

树状结构中的每个节点要么是一个子类,要么是一个单元,具体由 ListingGroupType 指定。子类会在树状结构中延伸出一个新的级别,相当于树枝,而单元则是树状结构上的树叶。每个子类之间必须始终完全分割开来,因此必须包含一个代表其他的节点。在下面的示例中,root 和 Hotel Class: (Other) 节点都是子类。这种包含子类和单元的树状结构允许您在单元级别设置出价,并确保每项酒店信息属于且只属于树状结构中的一个单元节点。

节点是 ListingGroupInfo 类的对象,该类包含的 ListingGroupType 字段用于指示节点是单元,还是子类。将 ListingGroupInfo 设置为 AdGroupCriterionlisting_group 会将其链接到 AdGroup

设置百分比形式的每次点击费用出价

您只能在单元节点上设置 AdGroupCriterionpercent_cpc_bid_micros。在子类节点上尝试执行此项设置操作,将会失败并显示错误。

信息维度

ListingGroupInfo 还具有 case_value,它是一个 ListingDimensionInfo,包含几种维度类型中的一种。ListingGroupInfo 表示与您的酒店相关联的值,例如酒店 ID、酒店所在国家/地区或酒店星级。有关可用的 ListingDimensionInfo 类型的完整说明,请参阅参考文档

子类的每个直属子级都必须具有属于相同 ListingDimensionInfo 子类型的 case_value,但根节点除外,它没有 case_value

另请注意,每个子类都必须包含一个正确类型的“空”case_value,用于表示“所有其他值”。

如需了解更多详情,请查看下面的代码段,该代码段添加的是酒店信息组树状结构的第一级。

PHP
private static function addLevel1Nodes(
    $customerId,
    $adGroupId,
    $rootResourceName,
    array &$operations,
    $percentCpcBidMicroAmount
) {
    // Creates hotel class info and dimension info for 5-star hotels.
    $fiveStarredDimensionInfo = new ListingDimensionInfo([
        'hotel_class' => new HotelClassInfo(['value' => new Int64Value(['value' => 5])])
    ]);
    // Creates listing group info for 5-star hotels as a UNIT node.
    $fiveStarredUnit = self::createListingGroupInfo(
        ListingGroupType::UNIT,
        $rootResourceName,
        $fiveStarredDimensionInfo
    );
    // Creates an ad group criterion for 5-star hotels.
    $fiveStarredAdGroupCriterion = self::createAdGroupCriterion(
        $customerId,
        $adGroupId,
        $fiveStarredUnit,
        $percentCpcBidMicroAmount
    );
    // Decrements the temp ID for the next ad group criterion.
    self::$nextTempId--;
    $operation = self::generateCreateOperation($fiveStarredAdGroupCriterion);
    $operations[] = $operation;

    // You can also create more UNIT nodes for other hotel classes by copying the above code in
    // this method and modifying the value passed to HotelClassInfo() to the value you want.
    // For instance, passing 4 instead of 5 in the above code will create a UNIT node of 4-star
    // hotels instead.

    // Creates hotel class info and dimension info for other hotel classes by *not* specifying
    // any attributes on those object.
    $othersHotelsDimensionInfo = new ListingDimensionInfo([
        'hotel_class' => new HotelClassInfo()
    ]);
    // Creates listing group info for other hotel classes as a SUBDIVISION node, which will be
    // used as a parent node for children nodes of the next level.
    $otherHotelsSubDivision = self::createListingGroupInfo(
        ListingGroupType::SUBDIVISION,
        $rootResourceName,
        $othersHotelsDimensionInfo
    );
    // Creates an ad group criterion for other hotel classes.
    $otherHotelsAdGroupCriterion = self::createAdGroupCriterion(
        $customerId,
        $adGroupId,
        $otherHotelsSubDivision,
        $percentCpcBidMicroAmount
    );
    $operation = self::generateCreateOperation($otherHotelsAdGroupCriterion);
    $operations[] = $operation;

    self::$nextTempId--;
    return $otherHotelsAdGroupCriterion->getResourceName();
}

ListingDimensionInfo 的可用维度

以下 ListingDimensionInfo 类型可用于酒店广告。

提示:通过将 ListingDimensionInfo 类型的空对象传递给 ListingGroupInfo,您就可以创建其他单元节点。此外,您还必须设置其他单元节点的 AdGroupCriterionpercent_cpc_bid_micros 字段。

临时 ID

在服务器处理创建广告组条件的 mutate 请求之前,系统不会向这些条件分配 ID。不过,ListingGroupInfo 在处理完成前都是无效的,因此每当您创建子类时,还必须在相同的操作中至少创建一个子级子类。

要为子节点设置 ListingGroupInfoparent_criterion_id,您可以使用临时条件 ID。这些临时 ID 只是具有本地唯一性的标识符,不是具有全局唯一性的标识符,仅可在单个 mutate 请求的上下文中应用。任何负整数都可以用作临时 ID。在代码示例中,根 ListingGroupInfo 的 ID 设置为 -1

在处理请求时,系统会像往常一样为每个 AdGroupCriterion 分配一个正整数的全局 ID。