В Google Adwords, как вы программно изменяете бюджет?

К сожалению, нет примеров этого (и я копал в течение некоторого времени.)

Я хотел бы иметь возможность программно изменять бюджет кампании. Я вижу, что BudgetService существует, но я не знаю, как (или куда пойти, чтобы узнать, как) получить идентификатор бюджета или название бюджета.

Я предполагаю, что нужно запросить кампанию для ее бюджета, получить из этого значения BudgetId, а затем использовать его в запросе BudgetService. Это тот случай? Если нет, то в чем дело?

3 ответа

Решение

Я не знаю, какую языковую / клиентскую библиотеку вы используете, но для Ruby должно работать следующее, если вы уже выполнили настройку и авторизацию. Я предполагаю, что это будет очень похоже на любую из других клиентских библиотек.

Сначала установите соединение API.

adwords = AdwordsApi::Api.new

Используйте CampaignService, чтобы получить идентификатор бюджета. Вы также можете узнать текущую сумму и период бюджета (ЕЖЕДНЕВНО, ЕЖЕМЕСЯЧНО и т. Д.).

campaign_srv = adwords.service(:CampaignService, API_VERSION)

selector = {
    fields: ['Id', 'Name', 'BudgetId', 'BudgetName', 'Amount', 'Period'], 
    predicates: [
        {field: 'Id', operator: 'EQUALS', values: [CAMPAIGN_ID]}
    ]
}

campaign_response = campaign_srv.get(selector)

Извлеките идентификатор бюджета из ответа и используйте BudgetService, чтобы изменить сумму.

budget_id = response[:entries][0][:budget][:budget_id]
budget_srv = adwords.service(:BudgetService, API_VERSION)

operation = {
    operator: 'SET',
    operand: {
        id: budget_id,
        amount: DESIRED_AMOUNT_IN_LOCAL_CURRENCY_FOR_ACCOUNT
    }
}
budget_response = budget_srv.mutate([operation])

Большая часть документации Google о Shared Budgets а не об установлении бюджета отдельной кампании. Чтобы установить бюджет отдельной кампании, вам все равно нужно использовать BudgetService и создать BudgetId, но установить isExplicitlyShared в false, Установка общих настроек на false не будет создавать общий бюджет, а создаст объект бюджета, который будет устанавливать бюджет отдельной кампании. Пример Python ниже:

from googleads import adwords

client = adwords.AdWordsClient.LoadFromStorage('<PATH_TO_YOUR_SERVICE_ACCOUNT>')
client.SetClientCustomerId('<YOUR_ADWORDS_ACCOUNT_ID>')

campaign_id = '<YOUR_CAMPAIGN_ID>'


def main():
    # Initialize both campaign and budget services
    campaign_service = client.GetService('CampaignService', version='v201809')
    budget_service = client.GetService('BudgetService', version='v201809')

    # Create a budget ID with no name, specify that it is not a shared budget
    # Establish budget as a micro amount
    budget = {
        'name': None,
        'isExplicitlyShared': 'false',
        'amount': {
            'microAmount': 80000000
            }
        }

    budget_operations = [{
        'operator': 'ADD',
        'operand': budget
        }]

    budget_id = budget_service.mutate(budget_operations)['value'][0]['budgetId']


    # Construct operations and update campaign.
    operations = [{
        'operator': 'SET',
        'operand': {
        'id': campaign_id,
        'budget': {
            'budgetId': budget_id
            }
        }
    }]

    campaigns = campaign_service.mutate(operations)

Функция php для обновления бюджета, GoogleApiAdsAdWords, v201609

function GetCampaignAndUpdateBudgetExample(AdWordsUser $user, $campaignId)
{
    // Get the service, which loads the required classes.
    $campaignService = $user->GetService('CampaignService', ADWORDS_VERSION);

    // Create selector.
    $selector = new Selector();
    $selector->fields = array('Id', 'Name', 'BudgetId', 'BudgetName', 'Amount');
    $selector->predicates[] = new Predicate('CampaignId', 'EQUALS', array($campaignId));
    $selector->ordering[] = new OrderBy('Name', 'ASCENDING');

    // Create paging controls.
    $selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE);

    // Make the get request.
    $page = $campaignService->get($selector);

    // Display results.
    if (isset($page->entries[0]))
    {
        $campaign = $page->entries[0];
        printf("Campaign with name '%s' and ID '%s' and budget ID '%s' and budget Name '%s' was found.\n", $campaign->name, $campaign->id, $campaign->budget->budgetId, $campaign->budget->name);


        // Get the BudgetService, which loads the required classes.
        $budget_service = $user->GetService('BudgetService', ADWORDS_VERSION);
        // Create the shared budget (required).
        $budget = new Budget();
        $budget->budgetId = $campaign->budget->budgetId;
        $budget->amount = new Money(20000000);
        $budget->deliveryMethod = 'STANDARD';
        // Create operation.
        $budet_operation = new BudgetOperation();
        $budet_operation->operand = $budget;
        $budet_operation->operator = 'SET';
        // Make the mutate request.
        $budget_service_result = $budget_service->mutate([$budet_operation]);
        $budget_result = $budget_service_result->value[0];

        printf("Budget with name '%s' and ID '%s' updated.\n", $budget_result->name, $budget_result->budgetId);
    }
    else
    {
        print "No campaigns were found.\n";
    }
}
Другие вопросы по тегам