public void Run(AdWordsUser user, long adGroupId)
{
// Get the AdGroupCriterionService.
AdGroupCriterionService adGroupCriterionService =
(AdGroupCriterionService) user.GetService(AdWordsService.v201306.AdGroupCriterionService);
// Set partial failure mode for the service.
adGroupCriterionService.RequestHeader.partialFailure = true;
List<AdGroupCriterionOperation> operations = new List<AdGroupCriterionOperation>();
// Create the placements.
string[] urls = new String[] {"http://mars.google.com", "http:/mars.google.com",
"mars.google.com"};
foreach (String url in urls) {
Placement placement = new Placement();
placement.url = url;
// Create biddable ad group criterion.
BiddableAdGroupCriterion placementBiddableAdGroupCriterion = new BiddableAdGroupCriterion();
placementBiddableAdGroupCriterion.adGroupId = adGroupId;
placementBiddableAdGroupCriterion.criterion = placement;
// Create the operation.
AdGroupCriterionOperation placementAdGroupCriterionOperation =
new AdGroupCriterionOperation();
placementAdGroupCriterionOperation.operand = placementBiddableAdGroupCriterion;
placementAdGroupCriterionOperation.@operator = Operator.ADD;
operations.Add(placementAdGroupCriterionOperation);
}
try {
// Create the placements.
AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(operations.ToArray());
// Display the results.
if (result != null && result.value != null) {
foreach (AdGroupCriterion adGroupCriterionResult in result.value) {
if (adGroupCriterionResult.criterion != null) {
Console.WriteLine("Placement with ad group id '{0}', and criterion " +
"id '{1}', and url '{2}' was added.\n", adGroupCriterionResult.adGroupId,
adGroupCriterionResult.criterion.id,
((Placement) adGroupCriterionResult.criterion).url);
}
}
} else {
Console.WriteLine("No placements were added.");
}
// Display the partial failure errors.
if (result != null && result.partialFailureErrors != null) {
foreach (ApiError apiError in result.partialFailureErrors) {
int operationIndex = ErrorUtilities.GetOperationIndex(apiError.fieldPath);
if (operationIndex != -1) {
AdGroupCriterion adGroupCriterion = operations[operationIndex].operand;
Console.WriteLine("Placement with ad group id '{0}' and url '{1}' "
+ "triggered a failure for the following reason: '{2}'.\n",
adGroupCriterion.adGroupId, ((Placement) adGroupCriterion.criterion).url,
apiError.errorString);
} else {
Console.WriteLine("A failure for the following reason: '{0}' has occurred.\n",
apiError.errorString);
}
}
}
} catch (Exception e) {
throw new System.ApplicationException("Failed to add placements in partial failure mode.",
e);
}
}