Adwords广告类型问题

时间:2014-03-13 14:00:09

标签: google-api google-adwords adwords-api-v201109

我正在尝试为广告组制作广告但收到以下错误:  faultString: [AdError.INVALID_AD_TYPE @ operations[0].operand.ad]

这是我的代码:

AdGroupAdProxy adGroupAdProxy= new AdGroupAdProxy(session, services);
adGroupAdProxy.createNewAd("TextAd", "http://example/12123.html", adGroupId);

public Long createNewAd(String adType, String displayUrl, Long adGroupId) throws ApiException, RemoteException{

Ad newAd = new Ad();
newAd.setAdType(adType);
newAd.setDisplayUrl(displayUrl);

AdGroupAd newAdGroupAd = new AdGroupAd();
newAdGroupAd.setAd(newAd);
newAdGroupAd.setAdGroupId(adGroupId);

AdGroupAdOperation operations = new AdGroupAdOperation();
operations.setOperand(newAdGroupAd);
operations.setOperator(Operator.ADD);

    Long adId = adGroupAdService.mutate(new AdGroupAdOperation[] {operations}).getValue(0).getAd().getId();
    return adId;

}

我正在研究应该提供给API的广告类型,但没有运气找到它。你能指点我的问题吗?

2 个答案:

答案 0 :(得分:2)

在Google AdWords中,广告系列可以定位多个不同的广告网络。搜索网络用于文字广告;展示广告网络适用于图片广告。有些广告系列仅针对单个网络,而其他广告系列仅针对两个广告系列。

您可能正在尝试将文字广告上传到"仅限展示广告网络"广告活动。

还值得注意的是,在mutate操作中指示广告类型时,实际上指定的是xsi:type而不是Ad.Type(看起来这会在您的AdGroupAd类中处理,但只是想到我' d彻底!)。

答案 1 :(得分:0)

我看到了一个与此问题类似的问题。它正在设置广告的类型。您不应使用以下方式设置类型:

newAd.setAdType(adType);

而是通过基于您接收为参数的 adType 字符串创建不同的对象来创建某种类型的 Ad 。也许您甚至可以使用父类型 Ad 传递对象。当你读它时,它可能听起来有点模糊。让我演示一下:

AdGroupAdProxy adGroupAdProxy= new AdGroupAdProxy(session, services);
adGroupAdProxy.createNewAd(new TextAd(), "http://example/12123.html", adGroupId);

public Long createNewAd(Ad newAd, String displayUrl, Long adGroupId) throws ApiException, RemoteException{

newAd.setDisplayUrl(displayUrl);

AdGroupAd newAdGroupAd = new AdGroupAd();
newAdGroupAd.setAd(newAd);
newAdGroupAd.setAdGroupId(adGroupId);

AdGroupAdOperation operations = new AdGroupAdOperation();
operations.setOperand(newAdGroupAd);
operations.setOperator(Operator.ADD);

    Long adId = adGroupAdService.mutate(new AdGroupAdOperation[] {operations}).getValue(0).getAd().getId();
    return adId;

}

这样,Adwords库将在内部处理该类型。

这也是在以下PHP示例中完成的(它应该与Java完全相同),它们使用TextAd而不仅仅是Ad。 See line 53

P.S。我知道这个问题有点老了,但它解决了我的问题,所以它也可以为其他人解决;)