Обновление ценовых расширений удаляет старые ценовые расширения - PullRequest
0 голосов
/ 27 февраля 2019

Я написал скрипт для ежедневной загрузки расширений цен в мои кампании.Но по какой-то причине применение оператора SET приводит к удалению старых расширений.

Я хочу запустить его один раз (используя оператор ADD), а затем обновить расширения, используя SET.Как я могу это сделать?

Код ниже:

def add_price_extension(adwords, campaign_id, table_rows):
    # table_rows as an argument to the function!

    if len(table_rows) < 3:
        raise errors.GoogleAdsError('Not enough table rows (minimum: 3)')

    elif len(table_rows) > 8:
        raise errors.GoogleAdsError('Too many table rows (maximum: 8)')


    service = adwords.client.GetService('CampaignExtensionSettingService', version = 'v201806')
    operations = [{
        'operator': 'SET',
        'operand': {
            'campaignId': campaign_id,
            'extensionType': 'PRICE',
            'extensionSetting': {
                'extensions': [{
                    'xsi_type': 'PriceFeedItem',
                    'priceExtensionType': 'PRODUCT_CATEGORIES',
                    'language': 'pt-BR',
                    'campaignTargeting': {
                        'TargetingCampaignId': campaign_id
                    },
                    'scheduling': {
                        'feedItemSchedules': [
                            {
                                'dayOfWeek': day_of_week,
                                'startHour': 0,
                                'startMinute': 'ZERO',
                                'endHour': 24,
                                'endMinute': 'ZERO',
                            } for day_of_week in [
                                'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY',
                                'FRIDAY', 'SATURDAY', 'SUNDAY'
                            ]
                        ]
                    },
                    'tableRows': table_rows,
                    'priceQualifier': 'FROM',
                }]
            }
        }
    }]

    response = service.mutate(operations)

    if 'value' in response:
        print('Extension setting with type "%s" was added to the campaign with ID %d.'
              % (response['value'][0]['extensionType'], campaign_id))
    else:
        raise errors.GoogleAdsError('No extension settings were added.')

Я попытался использовать константу с именем FIRST_TIME, установив ее с True в первом запуске и False после.Но я немного озадачен передачей его функции.

FIRST_TIME = True

def add_price_extension(adwords, campaign_id, table_rows, first_time = FIRST_TIME):

...

    operations = [{
        if first_time:
            'operator': 'ADD'
        else:
            'operator': 'SET',
        'operand': { 
...

Заранее спасибо.

...