Subversion Repositories SmartDukaan

Rev

Rev 9226 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9005 manish.sha 1
// Copyright 2012 Google Inc. All Rights Reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
 
15
package adwords.axis.v201309.basicoperations;
16
 
17
import java.util.ArrayList;
18
import java.util.HashMap;
19
import java.util.List;
20
import java.util.Map;
21
 
22
import com.google.api.ads.adwords.axis.factory.AdWordsServices;
23
import com.google.api.ads.adwords.axis.v201309.cm.AdGroupCriterion;
24
import com.google.api.ads.adwords.axis.v201309.cm.AdGroupCriterionOperation;
25
import com.google.api.ads.adwords.axis.v201309.cm.AdGroupCriterionReturnValue;
26
import com.google.api.ads.adwords.axis.v201309.cm.AdGroupCriterionServiceInterface;
27
import com.google.api.ads.adwords.axis.v201309.cm.BiddableAdGroupCriterion;
28
import com.google.api.ads.adwords.axis.v201309.cm.BiddingStrategyConfiguration;
29
import com.google.api.ads.adwords.axis.v201309.cm.Bids;
30
import com.google.api.ads.adwords.axis.v201309.cm.CpcBid;
31
import com.google.api.ads.adwords.axis.v201309.cm.Keyword;
32
import com.google.api.ads.adwords.axis.v201309.cm.KeywordMatchType;
33
import com.google.api.ads.adwords.axis.v201309.cm.Money;
34
import com.google.api.ads.adwords.axis.v201309.cm.NegativeAdGroupCriterion;
35
import com.google.api.ads.adwords.axis.v201309.cm.Operator;
36
import com.google.api.ads.adwords.axis.v201309.cm.UserStatus;
37
import com.google.api.ads.adwords.lib.client.AdWordsSession;
38
import com.google.api.ads.common.lib.auth.OfflineCredentials;
39
import com.google.api.ads.common.lib.auth.OfflineCredentials.Api;
40
import com.google.api.client.auth.oauth2.Credential;
41
 
42
/**
43
 * This example adds keywords to an ad group. To get ad groups, run
44
 * AddAdGroup.java
45
 *
46
 * Credentials and properties in {@code fromFile()} are pulled from the
47
 * "ads.properties" file. See README for more info.
48
 *
49
 * Tags: AdGroupCriterionService.mutate
50
 *
51
 * Category: adx-exclude
52
 *
53
 * @author Kevin Winter
54
 */
55
public class AddKeywords {
56
 
57
	public static void main(String args[]){
58
		KeywordMatchType matchType = KeywordMatchType.fromString("BROAD");
59
	}
60
	public static List<Map<String, String>> runExample(long adGroupId, List<Map<String, String>> keywordDataList) throws Exception {
61
		// Generate a refreshable OAuth2 credential similar to a ClientLogin token
62
		// and can be used in place of a service account.
63
		Credential oAuth2Credential = new OfflineCredentials.Builder()
64
		.forApi(Api.ADWORDS)
65
		.fromFile()
66
		.build()
67
		.generateCredential();
68
 
69
		// Construct an AdWordsSession.
70
		AdWordsSession session = new AdWordsSession.Builder()
71
		.fromFile()
72
		.withOAuth2Credential(oAuth2Credential)
73
		.build();
74
 
75
		AdWordsServices adWordsServices = new AdWordsServices();
76
 
77
		// Get the AdGroupCriterionService.
78
		AdGroupCriterionServiceInterface adGroupCriterionService =
79
			adWordsServices.get(session, AdGroupCriterionServiceInterface.class);
80
 
81
		BiddableAdGroupCriterion[] keyWordbiddableAdGroupCriterion = new BiddableAdGroupCriterion[keywordDataList.size()];
82
		AdGroupCriterionOperation[] criterionOperations = new AdGroupCriterionOperation[keywordDataList.size()];
83
		for(int i=0;i<keywordDataList.size();i++){
84
			Map<String,String> keywordMap = keywordDataList.get(i);
85
 
86
			Keyword keyword = new Keyword();
87
			keyword.setText(keywordMap.get("Text"));
88
			keyword.setMatchType(KeywordMatchType.fromString(keywordMap.get("Type")));
89
 
90
			keyWordbiddableAdGroupCriterion[i] =new BiddableAdGroupCriterion();
91
			keyWordbiddableAdGroupCriterion[i].setAdGroupId(adGroupId);
92
			keyWordbiddableAdGroupCriterion[i].setCriterion(keyword);
93
 
94
			BiddingStrategyConfiguration biddingStrategyConfiguration = new BiddingStrategyConfiguration();
95
			CpcBid bid = new CpcBid();
96
			bid.setBid(new Money(null, (long)Double.parseDouble(keywordMap.get("bidamount"))));
97
			biddingStrategyConfiguration.setBids(new Bids[] {bid});
98
			keyWordbiddableAdGroupCriterion[i].setBiddingStrategyConfiguration(biddingStrategyConfiguration);
99
 
100
			criterionOperations[i] = new AdGroupCriterionOperation();
101
			criterionOperations[i].setOperand(keyWordbiddableAdGroupCriterion[i]);
102
			criterionOperations[i].setOperator(Operator.ADD);
103
		}
104
		/*// Create keywords.
105
		Keyword keyword1 = new Keyword();
106
		keyword1.setText("mars");
107
		keyword1.setMatchType(KeywordMatchType.BROAD);
108
		Keyword keyword2 = new Keyword();
109
		keyword2.setText("pluto");
110
		keyword2.setMatchType(KeywordMatchType.EXACT);
111
 
112
		// Create biddable ad group criterion.
113
		BiddableAdGroupCriterion keywordBiddableAdGroupCriterion1 = new BiddableAdGroupCriterion();
114
		keywordBiddableAdGroupCriterion1.setAdGroupId(adGroupId);
115
		keywordBiddableAdGroupCriterion1.setCriterion(keyword1);
116
 
117
		// You can optionally provide these field(s).
118
		keywordBiddableAdGroupCriterion1.setUserStatus(UserStatus.PAUSED);
119
		keywordBiddableAdGroupCriterion1.setDestinationUrl("http://example.com/mars");
120
		BiddingStrategyConfiguration biddingStrategyConfiguration = new BiddingStrategyConfiguration();
121
		CpcBid bid = new CpcBid();
122
		bid.setBid(new Money(null, 10000000L));
123
		biddingStrategyConfiguration.setBids(new Bids[] {bid});
124
		keywordBiddableAdGroupCriterion1.setBiddingStrategyConfiguration(biddingStrategyConfiguration);
125
 
126
		NegativeAdGroupCriterion keywordNegativeAdGroupCriterion2 = new NegativeAdGroupCriterion();
127
		keywordNegativeAdGroupCriterion2.setAdGroupId(adGroupId);
128
		keywordNegativeAdGroupCriterion2.setCriterion(keyword2);
129
 
130
		// Create operations.
131
		AdGroupCriterionOperation keywordAdGroupCriterionOperation1 = new AdGroupCriterionOperation();
132
		keywordAdGroupCriterionOperation1.setOperand(keywordBiddableAdGroupCriterion1);
133
		keywordAdGroupCriterionOperation1.setOperator(Operator.ADD);
134
		AdGroupCriterionOperation keywordAdGroupCriterionOperation2 = new AdGroupCriterionOperation();
135
		keywordAdGroupCriterionOperation2.setOperand(keywordNegativeAdGroupCriterion2);
136
		keywordAdGroupCriterionOperation2.setOperator(Operator.ADD);
137
 
138
		AdGroupCriterionOperation[] operations =
139
			new AdGroupCriterionOperation[] {keywordAdGroupCriterionOperation1,
140
				keywordAdGroupCriterionOperation2};*/
141
 
142
		// Add keywords.
143
		AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(criterionOperations);
144
 
145
		List<Map<String, String>> keywordDataMainList = new ArrayList<Map<String,String>>();
146
		// Display results.
147
		for (AdGroupCriterion adGroupCriterionResult : result.getValue()) {
148
			System.out.println("Keyword ad group criterion with ad group id \""
149
					+ adGroupCriterionResult.getAdGroupId() + "\", criterion id \""
150
					+ adGroupCriterionResult.getCriterion().getId() + "\", text \""
151
					+ ((Keyword) adGroupCriterionResult.getCriterion()).getText() + "\" and match type \""
152
					+ ((Keyword) adGroupCriterionResult.getCriterion()).getMatchType() + "\" was added.");
153
			BiddableAdGroupCriterion biddableAdGroupCriterion = (BiddableAdGroupCriterion) adGroupCriterionResult;
154
			Keyword keyword = (Keyword) adGroupCriterionResult.getCriterion();
155
			Bids bid = biddableAdGroupCriterion.getBiddingStrategyConfiguration().getBids(0);
156
			Map<String,String> keywordMap = new HashMap<String,String>();
157
			keywordMap.put("AdgroupId", adGroupCriterionResult.getAdGroupId()+"");
158
			keywordMap.put("Text",keyword.getText());
159
			keywordMap.put("CriterionId", keyword.getId()+"");
160
			keywordMap.put("Type", keyword.getMatchType().getValue());
161
			keywordMap.put("BidAmount", ((CpcBid)bid).getBid().getMicroAmount()+"");
162
			keywordDataMainList.add(keywordMap);
163
		}
164
		return keywordDataMainList;
165
	}
166
}