Adwords广告类型问题
我正在尝试为广告组制作广告,但遇到以下错误: 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的广告类型,但没有找到它的运气。 你能指点我的问题吗?
在Google AdWords中,广告系列可以定位几个不同的广告网络。 搜索网络适用于文字广告; 展示广告网络适用于图片广告。 一些广告系列只针对一个网络,而其他广告系列则针对这两个网络
您可能试图将文字广告上传到“仅限展示广告网络”广告系列。
同样值得注意的是,当在mutate操作中指示广告类型时,您实际上指定了xsi:type而不是Ad.Type(看起来像这样会在您的AdGroupAd类中处理,但只是认为我会彻底!)。
我看到了一个应该与此问题类似的问题。 这是设置广告的类型。 您不应该使用以下设置类型:
newAd.setAdType(adType);
但是,请根据您接受的adType字符串创建一个不同的对象来创建某种类型的广告。 也许你甚至可以传递父类型为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。 见第53行
PS我知道这个问题有点老,但它解决了我的问题,所以它也可能为其他人做;)
链接地址: http://www.djcxy.com/p/32349.html