升级版网址

升级版网址为您在 AdWords 中管理网址提供了一种更智能的方式。您可以规定网址中的哪一部分用于指定着陆页,哪一部分用于跟踪。本指南将为您介绍这个功能。

目前,我们使用目标网址来指定用户在点击广告后到达的网站区域,并对用于将广告效果归因到广告点击的附加信息进行编码。升级版网址提供共享跟踪模板,因此您可以更新针对网址的跟踪信息而不会触发编辑审核。

使用升级版网址,您可以通过以下几个单独字段指定网址中的跟踪部分和着陆页部分:

  • 最终到达网址:代表广告、关键字或附加链接的实际着陆页列表。最终到达网址必须是用户点击广告后最终在浏览器地址栏中看到的网址。
  • 最终到达移动网址:代表广告、关键字或附加链接在经过各种跨网域重定向后可能到达的最终移动网址列表。
  • 最终到达应用网址:代表将在移动设备上使用的最终到达应用网址列表,前提是用户已安装特定应用。
  • 跟踪模板:可选用的模板,用于指定额外的跟踪参数或重定向。我们还将使用此模板来构建实际的目标网址,以便与广告关联起来。
  • 自定义参数:可选的 ValueTrack 参数,您可以向其分配自己的 ID。

支持的实体

下表总结了升级版网址的各个字段所支持的 AdWords 实体。

AdWords 实体 最终到达网址 最终到达移动网址 最终到达应用网址 自定义参数 跟踪模板
Customer 复选标记
Campaign 复选标记 复选标记
AdGroup 复选标记 复选标记
Ad 复选标记 复选标记 复选标记 复选标记 复选标记
AdGroupCriterion 复选标记 复选标记 复选标记 复选标记 复选标记
FeedItem(附加链接) 复选标记 复选标记 复选标记 复选标记 复选标记

技术详情

最终到达网址

最终到达网址是指广告、关键字或附加链接的实际着陆页。最终到达网址必须是用户点击广告后在浏览器地址栏中看到的网址,其中不得再有任何离域重定向。

以下 C# 代码段展示了如何制作一个包含最终到达网址的文字广告:

// Create the text ad.
TextAd textAd = new TextAd();
textAd.headline = "Luxury Cruise to Mars";
textAd.description1 = "Visit the Red Planet in style.";
textAd.description2 = "Low-gravity fun for everyone!";
textAd.displayUrl = "www.example.com";

// Specify a list of final URLs. This field cannot be set if URL field
// is set. This may be specified at ad, criterion and feed item levels.
textAd.finalUrls = new string[] {
   "http://www.example.com/cruise/space/"
};

// Specify a list of final mobile URLs. This field cannot be set if URL
// field is set, or finalUrls is unset. This may be specified at ad,
// criterion and feed item levels.
textAd.finalMobileUrls = new string[] {
    "http://mobile.example.com/cruise/space/"
};

AdGroupAd textAdGroupAd = new AdGroupAd();
textAdGroupAd.adGroupId = adGroupId;
textAdGroupAd.ad = textAd;

// Create your Ad.
...

最终到达网址遵循与目标网址一样的覆盖规则。例如,关键字级别的最终到达网址会覆盖广告级别的最终到达网址。

目前用于目标网址的所有网址验证规则也都适用于最终到达网址。最终目标网址中可以包含网址标记。所有标记都应该是有效的 ValueTrack 代码或自定义参数。指定网址标记时最多可以使用 4 层嵌套,例如:

{ifmobile:{ifsearch:{keyword:cp={_customP}}}}

在大多数时候,您只需要指定一个最终到达网址或最终到达移动网址。在极少数情况下,跟踪模板可能会将用户重定向到几个着陆页中的其中一个(例如在测试着陆页时),而不是使用广告客户网域上的某个通用着陆页,这时您可以使用多个最终到达网址来分别指定各个着陆页。

最终到达移动网址

如果您希望将用户引导至移动设备上的不同着陆页,您可以提供单独的首选移动设备的最终到达网址。不过,如果您更喜欢使用 ValueTrack 参数,那么您可以使用现有的 ValueTrack 参数 {device}{ifmobile},而不是使用此字段。

最终到达应用网址

如果您的广告利用深层链接直接链接到应用内的内容,或者是点击下载广告,那么您可以在“最终到达应用网址”字段中指定这些网址。

跟踪模板

您可以有选择地指定在使用跟踪模板时需要哪些额外的跟踪参数或重定向。指定了参数后,它就会取代最终到达网址,用来构建广告的实际目标网址。跟踪服务会跟踪点击并将用户重定向到着陆页。着陆页网址应该与最终到达网址一致。此模板可以使用特殊的 ValueTrack 参数(例如 {lpurl})嵌入最终到达网址。

要更改任何受支持实体Ad 除外)上的跟踪参数,您只需更新跟踪模板即可。这不会触发 Google 的审核操作,因此您的广告可继续投放而不会中断。要更改 Ad 的跟踪模板,您必须移除现有 Ad 并创建一个包含新跟踪模板的新 Ad

以下 C# 代码段展示了如何在广告系列一级设置跟踪模板:

Campaign campaign = new Campaign();
campaign.id = 12345678;

// Specify a tracking URL for 3rd party tracking provider. You may
// specify one at customer, campaign, ad group, ad, criterion or
// feed item levels.
campaign.trackingUrlTemplate =
    "http://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl}";

// Update your campaign.
...

与最终到达网址一样,在较低级别实体上指定的跟踪模板将覆盖在较高级别实体上指定的设置,例如,广告系列一级的跟踪模板会覆盖帐户一级的设置。

自定义参数

使用自定义参数,您实际上可以创建自己的 ValueTrack 参数,当您需要使用自己的 ID 时,这可能会很有用,比如用来识别关键字。以前,您需要在关键字目标网址中进行硬编码。现在,您可以为关键字指定 ID,为每个关键字使用自定义参数,然后在最终到达网址和/或跟踪模板中引用自定义参数即可,就像您使用其他任何 ValueTrack 参数一样。

下面的示例代码段将自定义参数添加到广告系列。假设跟踪网址模板已如前文所述设置为

http://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl}

Campaign campaign = new Campaign();
campaign.id = 12345678;

// Since the tracking URL has two custom parameters, provide their
// values too. This can be provided at campaign, ad group, ad, criterion
// or feed item levels.
CustomParameter seasonParameter = new CustomParameter();
seasonParameter.key = "season";
seasonParameter.value = "spring";

CustomParameter promoCodeParameter = new CustomParameter();
promoCodeParameter.key = "promocode";
promoCodeParameter.value = "NYC123";

campaign.urlCustomParameters = new CustomParameters();
campaign.urlCustomParameters.parameters =
     new CustomParameter[] { seasonParameter, promoCodeParameter };

// Update your campaign.
...

自定义参数的名称中只能包含字母字符。在最终到达网址和跟踪模板中引用自定义参数时,您应该用大括号将自定义参数括住,并在参数名称前添加下划线,例如 {_promoCode}

与最终到达网址一样,较低级别实体的自定义参数将覆盖在较高级别实体指定的值。每个实体最多可以有 3 个自定义参数。键和值分别不得超出 16 和 200 字节。

新的 ValueTrack 参数

以下 ValueTrack 参数都可以用于升级版网址:

  • {ignore}:此参数可以插入到最终到达网址中,表示网址的后面部分不会更改内容。您可以使用此参数来减少针对网址的抓取活动数量。

    例如,如果您的最终到达网址是:

    http://cars.example.com/sedan{ignore}?promocode=NYC123&udv={device}
    

    这就告诉 Google,网页内容仅由 http://cars.example.com/sedan 决定,因此对于 promocode 中的任何变化或 {device} 的不同实例,都无需重新抓取网页。

  • {lpurl}{lpurl+2}{lpurl+3}:这些参数使用最终网页网址进行初始化,并根据标准网址规范进行转义。如果您需要未转义的网址,可以改用 {unescapedurl}{unescapedurl+2}{unescapedurl+3}。仅支持用于跟踪网址。

要详细了解 Valuetrack 参数,请参阅我们的帮助中心文章

附加链接支持使用 FeedItem 属性的升级版网址。相关占位符如下所示:

占位符类型 ID 占位符字段 数据类型 ID
SITELINKS 1 FINAL URLS REPEATED_URL 5
FINAL MOBILE URLS REPEATED_URL 6
TRACKING TEMPLATE URL 7

您可以通过 FeedItem 的 urlCustomParameters 属性来设置自定义参数。

报告

跟踪模板、最终到达网址、最终到达移动网址和自定义参数都可以作为属性在各种效果报告中提供。请注意,最终到达网址和最终到达移动网址在报告中将以值列表的形式提供,这些值以分号分隔,如下例所示:

http://www.example.com/cruise/space/;http://www.example.com/locations/mars/

同样,自定义参数将返回为一系列以分号分隔的键值对:

{_season}=spring;{_promocode}=NYC123

要获取按每次展示的有效最终到达网址汇总的统计信息,请使用 FINAL_URL_REPORT

使用升级版网址前的准备工作

要将现有实体更新为使用升级版网址,您可以清除它们的目标网址字段,然后在这些位置设置相应的升级版网址字段。但这种方法不适用于广告,因为广告的目标网址在创建之后是不可更新的。相反,您需要使用 AdGroupAdServiceupgradeUrl 方法来升级广告。upgradeUrl 将完成广告升级,还不会丢失广告的历史统计信息。

AdGroupAdService adGroupAdService = (AdGroupAdService) user.GetService(
    AdWordsService.v201702.AdGroupAdService);

AdUrlUpgrade upgrade = new AdUrlUpgrade() {
  adId = adId,
  finalUrl = "http://example.com",
};
try {
  adGroupAdService.upgradeUrl(new AdUrlUpgrade[] { upgrade });
} catch (Exception ex) {
  throw new System.ApplicationException("Failed to upgrade ad.", ex);
}

请注意,更改广告、关键字或附加链接的网址将触发编辑审核。

如果同时使用新老设置,请注意:

  • 自定义参数和新的 ValueTrack 参数不适用于旧版目标网址。它们只适用于升级版网址的各个字段。
  • 跟踪模板不会影响旧版目标网址,它们只适用于升级版网址的各个字段。
  • 帐户、广告系列或广告组级别的跟踪模板应该包含 {lpurl} 或等效标记。
  • 不能在同一级别混用新老设置。但您可以在不同对象层级混合使用新老设置;并且较低级别的设置将覆盖较高级别的设置。例如,如果广告组中的广告有最终到达网址,但关键字有目标网址,则关键字的目标网址将优先于广告的最终到达网址。

请查看迁移到升级版网址了解详情。

更新升级版网址

根据实体类型,更改升级版网址属性可能触发编辑审核,使广告停止投放,直到审核结束。

AdWords 实体 最终到达网址 最终到达移动网址 最终到达应用网址 自定义参数 跟踪模板
Customer 不适用 不适用 不适用 不适用

投放

Campaign 不适用 不适用 不适用

投放

投放

AdGroup 不适用 不适用 不适用

投放

投放

Criterion

停止

停止

停止

停止

停止

FeedItem

停止

停止

停止

停止

停止

Ad

停止

停止

停止

停止

停止

代码示例

每个客户端库AdvancedOperations 文件夹中都包含一个展示如何设置升级版网址的代码示例。

添加带升级版网址文字广告示例
Java AddTextAdWithUpgradedUrls.java
Perl add_text_ad_with_upgraded_urls.pl
PHP AddTextAdWithUpgradedUrls.php
Python add_text_ad_with_upgraded_urls.py
Ruby add_text_ad_with_upgraded_urls.rb
.NET (C#) AddTextAdWithUpgradedUrls.cs
.NET (VB) AddTextAdWithUpgradedUrls.vb

迁移到升级版网址

本指南的以下内容将介绍如何使用 AdWords API 将目标网址更新为升级版网址。

如果您暂时不愿升级,并且您的目标网址中包含的域名与显示网址一样,那么您的目标网址将从 2015 年 7 月开始自动升级。如果目标网址中包含的域名与显示网址不同,您的广告将停止投放,直到您手动升级网址。

如果您除了自己发出 API 调用之外,还使用第三方点击跟踪广告或广告系列管理服务,请与您的服务提供商联系,他们可能会提供专门针对自家平台和服务的升级支持或文档供您使用。

找出要迁移的目标网址

包含目标网址的已启用和已暂停的广告都需要进行迁移(动态展示广告、Gmail 赞助广告和灯箱广告除外)。您可以通过以下方式查询要迁移的广告:

AdGroupAdPage page = adGroupAdService.query("Select AdGroupId, Id where " +
    "Url starts_with 'http' and Status in [ENABLED, PAUSED]");

对于条件,可以尝试以下查询:

AdGroupCriterionPage page = adGroupCriterionService.query("SELECT AdGroupId, Id where " +
    "DestinationUrl starts_with 'http' and Status in [ENABLED, PAUSED]");

对于附加信息没有任何网址过滤器,因此您必须提取所有有效的 Feed 项,再目测找出网址字段。

下载实体

要迁移帐户以使用升级版网址,首先请提取以下实体:

广告

AdGroupAdService service =
    (AdGroupAdService) user.GetService(AdWordsService.v201702.AdGroupAdService);

AdGroupAdPage page = service.query("Select AdGroupId, Id, Url where " +
    "Status in [ENABLED, PAUSED]");

条件

AdGroupCriterionService service = (AdGroupCriterionService) user.GetService(
    AdWordsService.v201702.AdGroupCriterionService);

AdGroupCriterionPage page = service .query("Select AdGroupId, Id, " +
    "DestinationUrl where Status in [ENABLED, PAUSED]");
CampaignExtensionSettingService service = (CampaignExtensionSettingService)
    user.GetService(AdWordsService.v201702.CampaignExtensionSettingService);

CampaignExtensionSettingPage page = service.query(
    "Select CampaignId, Extensions where ExtensionType=SITELINK");

按广告系列或广告组迁移会更轻松,请参考我们的代码示例了解如何过滤下载。

网址类型

AdWords 中的所有目标网址大致分为以下两种类型:

类型 1 类型 2
说明 在网址中未使用任何形式的跟踪。 使用跟踪参数或跟踪服务器来监控广告效果;或重定向到其他网域。
示例网址 http://example.com/shoes
http://example.com/dresses?color=red
http://example.com/shoes?color=red&kwid=12345&ad={creative}
http://tracker.example.com/redir?kwid=12345&ad={creative}&url=http%3A%2F%2Fwww.example.com%2Fshoes%3Fcolor%3Dred

迁移策略

我们针对上述两种目标网址类型提出三个迁移策略。

策略 1 策略 2 策略 3
摘要 将目标网址复制到最终到达网址。 将目标网址拆分为跟踪部分和着陆页部分。将跟踪部分复制到跟踪网址模板,将着陆页部分复制到最终到达网址。 将目标网址拆分为跟踪部分和着陆页部分。指定通用参数并将其用于设置共享跟踪模板和自定义参数。将着陆页网址复制到最终到达网址。
适用于 类型 1、类型 2 类型 2 类型 2
升级过程中的好处
可保留广告的效果统计信息 复选标记 复选标记 圆圈斜杠符号
针对广告、关键字或附加链接的操作不会触发政策审核 复选标记 复选标记 圆圈斜杠符号
升级后可以使用的功能
当新的广告或关键字在审核中时,网站的负荷更小 圆圈斜杠符号 复选标记 复选标记
集中进行网址跟踪管理 圆圈斜杠符号 圆圈斜杠符号 复选标记
将来对共享跟踪模板做出更改时,不会重置您的广告效果数据,也不会中断广告投放 圆圈斜杠符号 圆圈斜杠符号 复选标记
可在升级过程中添加新的 ValueTrack 参数和自定义参数 是(需要审核) 是(需要审核) 是(需要审核)

下面我们详细讨论每个策略。

策略 1:直接复制

对于第一种类型的实体,建议采用这种迁移策略。具体做法是,将目标网址复制到最终到达网址,然后清除目标网址,以此完成实体的升级。

广告

由于广告的目标网址在创建后无法更新,因此您在更新广告时需要使用以下迁移方法:

List<AdUrlUpgrade> operations = new List<AdUrlUpgrade>();
foreach (AdGroupAd adGroupAd in page.entries) {
  AdUrlUpgrade upgradeUrl = new AdUrlUpgrade();
  upgradeUrl.adId = adGroupAd.ad.id;
  upgradeUrl.finalUrl = adGroupAd.ad.url;
  operations.Add(upgradeUrl);
}
service.upgradeUrl(operations.ToArray());

这样的话,既可以升级广告,又不会重置广告统计信息。

条件

foreach (AdGroupCriterion adGroupCriterion in page.entries) {
  if (adGroupCriterion is BiddableAdGroupCriterion) {
    BiddableAdGroupCriterion biddableAdGroupCriterion =
       (BiddableAdGroupCriterion) adGroupCriterion;
    biddableAdGroupCriterion.finalUrls = new UrlList() {
      urls = new string[] {
        biddableAdGroupCriterion.destinationUrl
      }
    };
    biddableAdGroupCriterion.destinationUrl = null;

    AdGroupCriterionOperation operation = new AdGroupCriterionOperation() {
      @operator = Operator.SET,
      operand = biddableAdGroupCriterion
    };
    operations.Add(operation);
  }
}
service.mutate(operations.ToArray());
List<CampaignExtensionSettingOperation> operations =
    new List<CampaignExtensionSettingOperation>();
foreach (CampaignExtensionSetting campaignExtensionSetting in page.entries) {
  foreach (ExtensionFeedItem feedItem in
      campaignExtensionSetting.extensionSetting.extensions) {
    if (feedItem is SitelinkFeedItem) {
      SitelinkFeedItem sitelinkFeedItem = (SitelinkFeedItem) feedItem;
      if (String.IsNullOrWhiteSpace(sitelinkFeedItem.sitelinkUrl)) {
        sitelinkFeedItem.sitelinkUrl = null; //No update to this field
      } else {
        sitelinkFeedItem.sitelinkFinalUrls = new string[] {
          sitelinkFeedItem.sitelinkUrl
        };
        sitelinkFeedItem.sitelinkUrl = "";
      }
    }
  }
  CampaignExtensionSettingOperation operation =
      new CampaignExtensionSettingOperation() {
    operand = campaignExtensionSetting,
    @operator = Operator.SET
  };
  operations.Add(operation);
}
service.mutate(operations.ToArray());

策略 2:使用跟踪网址模板

这种迁移策略适用于第二种类型的实体。迁移到升级版网址但不使用共享跟踪模板或自定义 ValueTrack 参数。如果跟踪参数在广告系列的整个生命周期都保持静态,采用这种做法最好。

分析网址

首先,将目标网址拆分为跟踪模板部分和着陆页部分。根据原始着陆页网址之前出现在原始目标网址中的位置,在跟踪模板中插入 {lpurl}。

目标网址 跟踪模板 着陆页
http://example.com/shoes?color=red&kwid=12345&ad={creative} {lpurl}&kwid=12345&ad={creative} http://example.com/shoes?color=red
http://tracker.example.com/redir?kwid=12345&ad={creative}&url= http%3A%2F%2Fwww.example.com%2Fshoes%3Fcolor%3Dred http://tracker.example.com/redir?kwid=12345&ad={creative}&url={lpurl} http://example.com/shoes?color=red

更新实体

现在可以升级这些实体,这与策略 1 中的操作方法相同。您需要额外将实体的跟踪模板设置为新求值的跟踪网址模板:

广告
List operations = new List();
foreach (AdGroupAd adGroupAd in page.entries) {
  AdUrlUpgrade upgradeUrl = new AdUrlUpgrade();
  upgradeUrl.adId = adGroupAd.ad.id;
  upgradeUrl.finalUrl = landingPageUrl;

  upgradeUrl.trackingUrlTemplate = trackingUrlTemplate;
  operations.Add(upgradeUrl);
}
service.upgradeUrl(operations.ToArray());
条件
foreach (AdGroupCriterion adGroupCriterion in page.entries) {
  if (adGroupCriterion is BiddableAdGroupCriterion) {
    BiddableAdGroupCriterion biddableAdGroupCriterion =
       (BiddableAdGroupCriterion) adGroupCriterion;
    biddableAdGroupCriterion.finalUrls = new UrlList() {
      urls = new string[] {
        landingPageUrl
      }
    };
    biddableAdGroupCriterion.destinationUrl = null;

    biddableAdGroupCriterion.trackingUrlTemplate = trackingUrlTemplate;

    AdGroupCriterionOperation operation = new AdGroupCriterionOperation() {
      @operator = Operator.SET,
      operand = biddableAdGroupCriterion
    };
    operations.Add(operation);
  }
}
service.mutate(operations.ToArray());
List operations =
    new List();
foreach (CampaignExtensionSetting campaignExtensionSetting in page.entries) {
  foreach (ExtensionFeedItem feedItem in
      campaignExtensionSetting.extensionSetting.extensions) {
    if (feedItem is SitelinkFeedItem) {
      SitelinkFeedItem sitelinkFeedItem = (SitelinkFeedItem) feedItem;

      sitelinkFeedItem.sitelinkFinalUrls = new string[] {
        landingPageUrl
      };
      sitelinkFeedItem.sitelinkUrl = null;
      sitelinkFeedItem.sitelinkTrackingUrlTemplate = trackingUrlTemplate;
    }
  }
  CampaignExtensionSettingOperation operation =
      new CampaignExtensionSettingOperation() {
    operand = campaignExtensionSetting,
    @operator = Operator.SET
  };
  operations.Add(operation);
}
service.mutate(operations.ToArray());

策略 3:使用共享跟踪模板

此策略可用于迁移第二种类型的实体。使用了共享跟踪模板和自定义 ValueTrack 参数。如果您使用一个或多个第三方跟踪服务器,或者您的跟踪参数经常改变,那么这种做法最好。

分析网址

首先,将目标网址拆分为跟踪模板部分和着陆页部分。

目标网址 跟踪模板 着陆页
http://example.com/shoes?color=red& kwid=12345&ad={creative} {lpurl}&kwid=12345&ad={creative} http://example.com/shoes?color=red
http://tracker.example.com/redir? kwid=12345&ad={creative} &url=http%3A%2F%2Fwww.example.com%2F shoes%3Fcolor%3Dred http://tracker.example.com/redir? kwid=12345&ad={creative}&url={lpurl} http://example.com/shoes?color=red

接下来,尽量在跟踪模板中找出可重复使用的跟踪网址和跟踪参数。根据帐户结构,查找广告组、广告系列或帐户级别的可重复使用的值。

跟踪模板 跟踪网址 跟踪参数
{lpurl}&kwid=12345&ad={creative}   kwid=
ad=
http://tracker.example.com/redir?kwid=12345&ad={creative}&url={lpurl} http://tracker.example.com/redir kwid=
ad=
url=

定义自定义参数,用来存放您找到的每个跟踪参数的值。(注意下划线前缀。)

自定义参数
_kwid 12345
_ad {creative}

修改跟踪模板以使用新的自定义参数。

目标网址 跟踪模板 自定义参数 参数值 着陆页
http://example.com/shoes? color=red&kwid=12345&ad={creative} {lpurl}&kwid={_kwid}&ad={_ad} _kwid 12345 http://example.com/shoes? color=red
_ad {creative}
http://tracker.example.com/redir? kwid=12345&ad={creative}&url=http%3A%2F%2F www.example.com%2Fshoes%3Fcolor%3Dred http://tracker.example.com/redir? kwid={_kwid}&ad={_ad}&url={lpurl} _kwid 12345 http://example.com/shoes? color=red
_ad {creative}

确定共享级别

您必须确定各个共享实体可以放在哪个级别。例如,跟踪网址模板可以在广告系列或帐户级别共享,而自定义参数也许适合放在关键字一级。本指南中的代码段假设跟踪网址模板和自定义参数都可以在广告系列一级共享。

更新实体

确定了目标网址的可共享部分及其所在的级别后,就可以在帐户中设置参数了:

广告系列
CampaignService service =
    (CampaignService) user.GetService(AdWordsService.v201702.CampaignService);

Campaign campaign = new Campaign();
campaign.id = 12345678;

// Specify a tracking URL for 3rd party tracking provider. You can
// specify one at customer, campaign, ad group, ad, criterion or
// feed item levels.
campaign.trackingUrlTemplate =
    "http://tracker.example.com/?kwid={_kwid}&ad={_ad}&url={lpurl}";

// Since your tracking URL has two custom parameters, provide their
// values too. This can be provided at campaign, ad group, ad, criterion
// or feed item levels.
CustomParameter seasonParameter = new CustomParameter();
seasonParameter.key = "kwid";
seasonParameter.value = "12345";

CustomParameter promoCodeParameter = new CustomParameter();
promoCodeParameter.key = "ad";
promoCodeParameter.value = "{creative}";

campaign.urlCustomParameters = new CustomParameters();
campaign.urlCustomParameters.parameters =
     new CustomParameter[] { seasonParameter, promoCodeParameter };

// Create the operation.
CampaignOperation operation = new CampaignOperation();
operation.@operator = Operator.SET;
operation.operand = campaign;

CampaignReturnValue retVal = service.mutate(new CampaignOperation[] { operation });
广告

由于 AdWords 无法仅凭跟踪网址模板和最终到达网址字段推断出广告的整个目标网址,因此在本例中不能使用 upgradeUrl 方法。相反,我们需要删除旧广告,并创建新广告。这会触发对新广告的广告审核,而广告的统计信息将从零开始统计。您仍然可以查看已删除广告的统计信息。

List operations = new List();

foreach (AdGroupAd adGroupAd in page.entries) {
  // Delete the existing ad.
  AdGroupAd adToDelete = new AdGroupAd() {
    adGroupId = adGroupAd.adGroupId,
    ad = new Ad() {
      id = adGroupAd.ad.id
    }
  };

  AdGroupAdOperation removeOperation = new AdGroupAdOperation() {
    operand = adToDelete,
    @operator = Operator.REMOVE
  };
  operations.Add(removeOperation);

  // 制作广告的一个副本。
  AdGroupAd adToAdd = new AdGroupAd() {
    adGroupId = adGroupAd.adGroupId,
    ad = adGroupAd.ad
  };

  // 清除 ID 以告诉 AdWords 这是一个新广告。
  adToAdd.ad.idSpecified = false;

  // 将最终到达网址设为新求值的着陆页网址。
  adToAdd.ad.finalUrls = new string[] {
    landingPageUrl
  };

  // 清除目标网址。
  adToAdd.ad.url = null;

  AdGroupAdOperation addOperation = new AdGroupAdOperation() {
    operand = adToAdd,
    @operator = Operator.ADD
  };
  operations.Add(addOperation);
}

service.mutate(operations.ToArray());
条件
foreach (AdGroupCriterion adGroupCriterion in page.entries) {
  if (adGroupCriterion is BiddableAdGroupCriterion) {
    BiddableAdGroupCriterion biddableAdGroupCriterion =
       (BiddableAdGroupCriterion) adGroupCriterion;
    biddableAdGroupCriterion.finalUrls = new UrlList() {
      urls = new string[] {
        landingPageUrl
      }
    };
    biddableAdGroupCriterion.destinationUrl = null;

    AdGroupCriterionOperation operation = new AdGroupCriterionOperation() {
      @operator = Operator.SET,
      operand = biddableAdGroupCriterion
    };
    operations.Add(operation);
  }
}
service.mutate(operations.ToArray());
List operations =
    new List();
foreach (CampaignExtensionSetting campaignExtensionSetting in page.entries) {
  foreach (ExtensionFeedItem feedItem in
      campaignExtensionSetting.extensionSetting.extensions) {
    if (feedItem is SitelinkFeedItem) {
      SitelinkFeedItem sitelinkFeedItem = (SitelinkFeedItem) feedItem;

      sitelinkFeedItem.sitelinkFinalUrls = new string[] {
        landingPageUrl
      };
      sitelinkFeedItem.sitelinkUrl = null;
    }
  }
  CampaignExtensionSettingOperation operation =
      new CampaignExtensionSettingOperation() {
    operand = campaignExtensionSetting,
    @operator = Operator.SET
  };
  operations.Add(operation);
}
service.mutate(operations.ToArray());

移动网址

如果您希望将用户引导至移动设备上的不同着陆页,您可以提供单独的首选移动设备的最终到达网址。具体方法是设置该实体的 finalMobileUrls 字段。您也可以继续使用现有的 ValueTrack 参数:{device}{ifmobile}

部分升级

您可以升级帐户的某一部分而不影响其余部分。升级版网址字段不会影响未指定最终到达网址的实体。例如,如果您在广告系列一级指定了跟踪网址模板,但没有升级某个广告组中各个广告的目标网址,那么广告系列级别的跟踪网址模板不会影响这些广告。

多个跟踪网址

如果您使用不止一个跟踪服务器,您可以使用 {lpurl}{lpurl+2}{lpurl+3} 来构建目标网址。此外,您在指定网址标记时最多可以使用 4 层嵌套:

{ifmobile:{ifsearch:{keyword:cp={_customP}}}}

报告

升级了网址后,您需要更新代码,以便在提取报告时使用升级版网址列而不是目标网址列。请参阅此部分了解详情。

除了使用策略 3 时,您的广告投放统计信息在任何情况下都不会受影响。使用该策略时,您必须删除旧广告并创建新广告。这会触发对新广告的广告审核,而广告的统计信息将重置为零。不过,已删除广告的原有统计信息仍可查看。

迁移代码示例

请参考客户端库中的以下代码示例,它们将帮助您顺利完成迁移。

基本操作示例 升级网址示例
Java basicoperations UpgradeAdUrl.java
Perl basic_operations upgrade_ad_url.pl
PHP BasicOperations UpgradeAdUrl.php
Python basic_operations upgrade_ad_url.py
Ruby basic_operations upgrade_ad_url.rb
.NET (C#) BasicOperations UpgradeAdUrl.cs
.NET (VB) BasicOperations UpgradeAdUrl.vb

发送以下问题的反馈:

此网页
AdWords API
AdWords API
需要帮助?请访问我们的支持页面