Я написал скрипт для ежедневной загрузки расширений цен в мои кампании.Но по какой-то причине применение оператора 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': {
...
Заранее спасибо.