Subversion Repositories SmartDukaan

Rev

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 com.google.api.ads.adwords.axis.factory.AdWordsServices;
18
import com.google.api.ads.adwords.axis.v201309.cm.AdServingOptimizationStatus;
19
import com.google.api.ads.adwords.axis.v201309.cm.BiddingStrategyConfiguration;
20
import com.google.api.ads.adwords.axis.v201309.cm.BiddingStrategyType;
21
import com.google.api.ads.adwords.axis.v201309.cm.Budget;
22
import com.google.api.ads.adwords.axis.v201309.cm.BudgetBudgetDeliveryMethod;
23
import com.google.api.ads.adwords.axis.v201309.cm.BudgetBudgetPeriod;
24
import com.google.api.ads.adwords.axis.v201309.cm.BudgetOperation;
25
import com.google.api.ads.adwords.axis.v201309.cm.BudgetServiceInterface;
26
import com.google.api.ads.adwords.axis.v201309.cm.Campaign;
27
import com.google.api.ads.adwords.axis.v201309.cm.CampaignOperation;
28
import com.google.api.ads.adwords.axis.v201309.cm.CampaignReturnValue;
29
import com.google.api.ads.adwords.axis.v201309.cm.CampaignServiceInterface;
30
import com.google.api.ads.adwords.axis.v201309.cm.CampaignStatus;
31
import com.google.api.ads.adwords.axis.v201309.cm.FrequencyCap;
32
import com.google.api.ads.adwords.axis.v201309.cm.GeoTargetTypeSetting;
33
import com.google.api.ads.adwords.axis.v201309.cm.GeoTargetTypeSettingPositiveGeoTargetType;
34
import com.google.api.ads.adwords.axis.v201309.cm.KeywordMatchSetting;
35
import com.google.api.ads.adwords.axis.v201309.cm.Level;
36
import com.google.api.ads.adwords.axis.v201309.cm.ManualCpcBiddingScheme;
37
import com.google.api.ads.adwords.axis.v201309.cm.Money;
38
import com.google.api.ads.adwords.axis.v201309.cm.NetworkSetting;
39
import com.google.api.ads.adwords.axis.v201309.cm.Operator;
40
import com.google.api.ads.adwords.axis.v201309.cm.Setting;
41
import com.google.api.ads.adwords.axis.v201309.cm.TimeUnit;
42
import com.google.api.ads.adwords.lib.client.AdWordsSession;
43
import com.google.api.ads.common.lib.auth.OfflineCredentials;
44
import com.google.api.ads.common.lib.auth.OfflineCredentials.Api;
45
import com.google.api.client.auth.oauth2.Credential;
46
 
47
import org.joda.time.DateTime;
48
 
49
/**
50
 * This example adds campaigns.
51
 *
52
 * Credentials and properties in {@code fromFile()} are pulled from the
53
 * "ads.properties" file. See README for more info.
54
 *
55
 * Tags: CampaignService.mutate, BudgetService.mutate
56
 *
57
 * Category: adx-exclude
58
 *
59
 * @author Adam Rogal
60
 */
61
public class AddCampaigns {
62
 
63
	public static void main(String[] args) throws Exception {
64
		//runExample(adWordsServices, session);
65
	}
66
 
67
	public static Long runExample(String name, String status, String startDateStr, String endDateStr, Long amount, boolean googlesrchNtwrk, boolean displayntwrk, boolean partnersrchNtwrk) throws Exception {
68
		// Generate a refreshable OAuth2 credential similar to a ClientLogin token
69
		// and can be used in place of a service account.
70
		Credential oAuth2Credential = new OfflineCredentials.Builder()
71
		.forApi(Api.ADWORDS)
72
		.fromFile()
73
		.build()
74
		.generateCredential();
75
 
76
		// Construct an AdWordsSession.
77
		AdWordsSession session = new AdWordsSession.Builder()
78
		.fromFile()
79
		.withOAuth2Credential(oAuth2Credential)
80
		.build();
81
 
82
		AdWordsServices adWordsServices = new AdWordsServices();
83
		// Get the BudgetService.
84
		BudgetServiceInterface budgetService =
85
			adWordsServices.get(session, BudgetServiceInterface.class);
86
 
87
		// Create a budget, which can be shared by multiple campaigns.
88
		Budget sharedBudget = new Budget();
89
		sharedBudget.setName(name +"#" + System.currentTimeMillis());
90
		Money budgetAmount = new Money();
91
		budgetAmount.setMicroAmount(amount);
92
		sharedBudget.setAmount(budgetAmount);
93
		sharedBudget.setDeliveryMethod(BudgetBudgetDeliveryMethod.STANDARD);
94
		sharedBudget.setPeriod(BudgetBudgetPeriod.DAILY);
95
 
96
		BudgetOperation budgetOperation = new BudgetOperation();
97
		budgetOperation.setOperand(sharedBudget);
98
		budgetOperation.setOperator(Operator.ADD);
99
 
100
		// Add the budget
101
		Long budgetId =
102
			budgetService.mutate(new BudgetOperation[] {budgetOperation}).getValue(0).getBudgetId();
103
 
104
		// Get the CampaignService.
105
		CampaignServiceInterface campaignService =
106
			adWordsServices.get(session, CampaignServiceInterface.class);
107
 
108
		// Create campaign.
109
		Campaign campaign = new Campaign();
110
		campaign.setName(name);
111
		campaign.setStatus(CampaignStatus.fromString(status));
112
		BiddingStrategyConfiguration biddingStrategyConfiguration = new BiddingStrategyConfiguration();
113
		biddingStrategyConfiguration.setBiddingStrategyType(BiddingStrategyType.MANUAL_CPC);
114
 
115
		// You can optionally provide a bidding scheme in place of the type.
116
		ManualCpcBiddingScheme cpcBiddingScheme = new ManualCpcBiddingScheme();
117
		cpcBiddingScheme.setEnhancedCpcEnabled(false);
118
		biddingStrategyConfiguration.setBiddingScheme(cpcBiddingScheme);
119
 
120
		campaign.setBiddingStrategyConfiguration(biddingStrategyConfiguration);
121
 
122
		// You can optionally provide these field(s).
123
		campaign.setStartDate(startDateStr);
124
		campaign.setEndDate(endDateStr);
125
		campaign.setAdServingOptimizationStatus(AdServingOptimizationStatus.ROTATE);
126
		campaign.setFrequencyCap(new FrequencyCap(5L, TimeUnit.DAY, Level.ADGROUP));
127
 
128
		// Only the budgetId should be sent, all other fields will be ignored by CampaignService.
129
		Budget budget = new Budget();
130
		budget.setBudgetId(budgetId);
131
		campaign.setBudget(budget);
132
 
133
		// Set the campaign network options to Search and Search Network.
134
		NetworkSetting networkSetting = new NetworkSetting();
135
		networkSetting.setTargetGoogleSearch(googlesrchNtwrk);
136
		networkSetting.setTargetSearchNetwork(googlesrchNtwrk);
137
		networkSetting.setTargetContentNetwork(displayntwrk);
138
		networkSetting.setTargetPartnerSearchNetwork(partnersrchNtwrk);
139
		campaign.setNetworkSetting(networkSetting);
140
 
141
		// Set options that are not required.
142
		GeoTargetTypeSetting geoTarget = new GeoTargetTypeSetting();
143
		geoTarget.setPositiveGeoTargetType(GeoTargetTypeSettingPositiveGeoTargetType.DONT_CARE);
144
		KeywordMatchSetting keywordMatch = new KeywordMatchSetting();
145
		keywordMatch.setOptIn(Boolean.FALSE);
146
		campaign.setSettings(new Setting[] {geoTarget, keywordMatch});
147
 
148
 
149
		// You can create multiple campaigns in a single request.
150
		/*Campaign campaign2 = new Campaign();
151
		campaign2.setName("Sample_shop2020_campaign #" + System.currentTimeMillis());
152
		campaign2.setStatus(CampaignStatus.PAUSED);
153
		BiddingStrategyConfiguration biddingStrategyConfiguration2 = new BiddingStrategyConfiguration();
154
		biddingStrategyConfiguration2.setBiddingStrategyType(BiddingStrategyType.MANUAL_CPC);
155
		campaign2.setBiddingStrategyConfiguration(biddingStrategyConfiguration2);
156
 
157
		Budget budget2 = new Budget();
158
		budget2.setBudgetId(budgetId);
159
		campaign2.setBudget(budget2);
160
 
161
		NetworkSetting networkSetting2 = new NetworkSetting();
162
		networkSetting2.setTargetGoogleSearch(false);
163
		networkSetting2.setTargetSearchNetwork(false);
164
		networkSetting2.setTargetContentNetwork(true);
165
		networkSetting2.setTargetPartnerSearchNetwork(false);
166
		campaign2.setNetworkSetting(networkSetting2);
167
 
168
		KeywordMatchSetting keywordMatch2 = new KeywordMatchSetting();
169
		keywordMatch2.setOptIn(Boolean.FALSE);
170
		campaign2.setSettings(new Setting[] {keywordMatch2});*/
171
 
172
		// Create operations.
173
		CampaignOperation operation = new CampaignOperation();
174
		operation.setOperand(campaign);
175
		operation.setOperator(Operator.ADD);
176
		/*CampaignOperation operation2 = new CampaignOperation();
177
		operation2.setOperand(campaign2);
178
		operation2.setOperator(Operator.ADD);*/
179
 
180
		CampaignOperation[] operations = new CampaignOperation[] {operation};
181
 
182
		// Add campaigns.
183
		CampaignReturnValue result = campaignService.mutate(operations);
184
		Long campaignId = 0l;
185
		// Display campaigns.
186
		for (Campaign campaignResult : result.getValue()) {
187
			System.out.println("Campaign with name \"" + campaignResult.getName() + "\" and id \""
188
					+ campaignResult.getId() + "\" was added.");
189
			campaignId = campaignResult.getId();
190
		}
191
		return campaignId;
192
	}
193
}