Update Budget Google Ads API
I am trying to update the AmoutMicros of Budget but I don't receive error, just not update the budget:
CampaignBudget budget = new CampaignBudget() { ResourceName = ResourceNames.CampaignBudget(customerId, budgetId), AmountMicros = (price + amount) * 100000, Id = budgetId }; CampaignBudgetOperation budgetOperation = new CampaignBudgetOperation() { Create = budget, UpdateMask = FieldMasks.AllSetFieldsOf(budget), }; try { MutateCampaignBudgetsResponse responseBudget = budgetService.MutateCampaignBudgets( customerId.ToString(), new CampaignBudgetOperation[] { budgetOperation }); foreach(MutateCampaignBudgetResult result in responseBudget.Results) { updateResponse.CampignId = campaignId; updateResponse.Updated = true; Console.WriteLine(result); } return updateResponse; } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); return updateResponse; throw; }
This code don't show me a exception, apparently it was update, but, when I go at Google Ads Dashboard, the amout still the same.
I read the documentation but I didn't find an update of a budget.
My working code is PHP but you can refer this.
private static function updateCampaignBudget(GoogleAdsClient $googleAdsClient, int $customerId,int $campaign_budget,string $budget_resource_name){ // Creates a campaign budget. $budget = new CampaignBudget([ 'resource_name' => $budget_resource_name, //'delivery_method' => BudgetDeliveryMethod::STANDARD, 'amount_micros' => $campaign_budget //'explicitly_shared' => false ]); // Creates a campaign budget operation. $campaignBudgetOperation = new CampaignBudgetOperation(); $campaignBudgetOperation->setUpdate($budget); $campaignBudgetOperation->setUpdateMask(FieldMasks::allSetFieldsOf($budget)); // Issues a mutate request. $campaignBudgetServiceClient = $googleAdsClient->getCampaignBudgetServiceClient(); $response = $campaignBudgetServiceClient->mutateCampaignBudgets( $customerId, [$campaignBudgetOperation] ); /** @var CampaignBudget $addedBudget */ $updatedBudget = $response->getResults()[0]; //printf("Added budget named '%s'%s", $addedBudget->getResourceName(), PHP_EOL); return $updatedBudget->getResourceName(); }you can use ResourceNames::forCampaignBudget(customerId, budgetId) instead of $budget_resource_name