На этой странице описано, как выполнять некоторые из наиболее распространенных задач, связанных с незаконным оборотом наркотиков, с помощью API DCM/DFA для отчетности и отслеживания незаконного оборота наркотиков.
Общие советы по программированию
- Обязательные и необязательные свойства и параметры — см. справочную документацию , чтобы узнать, является ли свойство или параметр обязательным для вызова API.
- Поиск по именам с использованием подстановочных символов — вы можете использовать подстановочный символ звездочки (*) при поиске по именам объектов . Звездочка соответствует нулю или более любым символам. API также поддерживает неявный поиск по подстроке, поэтому поиск по "abc" будет неявно искать "*abc*".
- Обновление против внесения исправлений — для изменения существующего объекта у вас есть два варианта:
- Обновление — При обновлении объекта все поля будут перезаписаны при вставке. Важно загрузить объект, который вы хотите обновить, и внести в него все необходимые изменения. В противном случае все поля, отсутствующие в запросе на обновление, будут сброшены.
- Вставка изменений — при вставке изменений будут перезаписаны только указанные поля. В этом случае вы можете создать новый объект, присвоить ему тот же идентификатор, что и обновляемому объекту, указать поля для обновления и выполнить запрос на вставку изменений.
- Размеры — Физические размеры представлены объектом
Sizeопределенным службой размеров . Учетная запись предоставляет набор стандартных размеров, и вы можете добавить в этот список свои собственные пользовательские размеры. - Даты и время — Вы можете сохранять даты и время в формате RFC 3339 , используя местные часовые пояса; все значения, возвращаемые API, указаны в формате UTC. Это отличается от веб-сайта, где даты и время отображаются в настроенном вами часовом поясе (по умолчанию — время США/Нью-Йорка).
Создать рекламодателя
C#
- Создайте объект
Advertiserи задайте для него необходимые свойства «имя» и «статус» .// Create the advertiser structure. Advertiser advertiser = new Advertiser(); advertiser.Name = advertiserName; advertiser.Status = "APPROVED";
- Вызовите
advertisers.insert()для сохранения рекламодателя.// Create the advertiser. Advertiser result = service.Advertisers.Insert(advertiser, profileId).Execute();
Java
- Создайте объект
Advertiserи задайте для него необходимые свойства «имя» и «статус» .// Create the advertiser structure. Advertiser advertiser = new Advertiser(); advertiser.setName(advertiserName); advertiser.setStatus("APPROVED");
- Вызовите
advertisers.insert()для сохранения рекламодателя.// Create the advertiser. Advertiser result = reporting.advertisers().insert(profileId, advertiser).execute();
PHP
- Создайте объект
Advertiserи задайте для него необходимые свойства «имя» и «статус» .$advertiser = new Google_Service_Dfareporting_Advertiser(); $advertiser->setName($values['advertiser_name']); $advertiser->setStatus('APPROVED');
- Вызовите
advertisers.insert()для сохранения рекламодателя.$result = $this->service->advertisers->insert( $values['user_profile_id'], $advertiser );
Python
- Создайте объект
Advertiserи задайте для него необходимые свойства «имя» и «статус» .# Construct and save advertiser. advertiser = { 'name': 'Test Advertiser', 'status': 'APPROVED' }
- Вызовите
advertisers.insert()для сохранения рекламодателя.request = service.advertisers().insert( profileId=profile_id, body=advertiser) # Execute request and print response. response = request.execute()
Руби
- Создайте объект
Advertiserи задайте для него необходимые свойства «имя» и «статус» .# Create a new advertiser resource to insert. advertiser = DfareportingUtils::API_NAMESPACE::Advertiser.new( name: format('Example Advertiser #%s', SecureRandom.hex(3)), status: 'APPROVED' )
- Вызовите
advertisers.insert()для сохранения рекламодателя.# Insert the advertiser. result = service.insert_advertiser(profile_id, advertiser)
Создать кампанию
C#
Создайте объект
Campaignи задайте для него необходимые свойства:-
advertiserId— рекламодатель, с которым будет связана эта кампания. -
name— оно должно быть уникальным во всех рекламных кампаниях данного рекламодателя. -
defaultLandingPageId— целевая страница, на которую будут перенаправлены пользователи при клике на объявление в этой кампании, если для этого объявления такая страница еще не назначена. Вы можете найти существующие целевые страницы, вызвавadvertiserLandingPages.list, или создать новую, вызвавadvertiserLandingPages.insert. - Даты начала и окончания — они должны быть в будущем и могут быть точными до дня. Более подробную информацию см. в разделе «Даты и время» в общей информации о кодировании . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к дате окончания кампании.
// Locate an advertiser landing page to use as a default. LandingPage defaultLandingPage = getAdvertiserLandingPage(service, profileId, advertiserId); // Create the campaign structure. Campaign campaign = new Campaign(); campaign.Name = campaignName; campaign.AdvertiserId = advertiserId; campaign.Archived = false; campaign.DefaultLandingPageId = defaultLandingPage.Id; // Set the campaign start date. This example uses today's date. campaign.StartDate = DfaReportingDateConverterUtil.convertToDateString(DateTime.Now); // Set the campaign end date. This example uses one month from today's date. campaign.EndDate = DfaReportingDateConverterUtil.convertToDateString(DateTime.Now.AddMonths(1));
-
Для сохранения кампании вызовите метод
campaigns.insert().// Insert the campaign. Campaign result = service.Campaigns.Insert(campaign, profileId).Execute();
Java
Создайте объект
Campaignи задайте для него необходимые свойства:-
advertiserId— рекламодатель, с которым будет связана эта кампания. -
name— оно должно быть уникальным во всех рекламных кампаниях данного рекламодателя. -
defaultLandingPageId— целевая страница, на которую будут перенаправлены пользователи при клике на объявление в этой кампании, если для этого объявления такая страница еще не назначена. Вы можете найти существующие целевые страницы, вызвавadvertiserLandingPages.list, или создать новую, вызвавadvertiserLandingPages.insert. - Даты начала и окончания — они должны быть в будущем и могут быть точными до дня. Более подробную информацию см. в разделе «Даты и время» в общей информации о кодировании . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к дате окончания кампании.
// Locate an advertiser landing page to use as a default. LandingPage defaultLandingPage = getAdvertiserLandingPage(reporting, profileId, advertiserId); // Create the campaign structure. Campaign campaign = new Campaign(); campaign.setName(campaignName); campaign.setAdvertiserId(advertiserId); campaign.setArchived(false); campaign.setDefaultLandingPageId(defaultLandingPage.getId()); // Set the campaign start date. This example uses today's date. Calendar today = Calendar.getInstance(); DateTime startDate = new DateTime(true, today.getTimeInMillis(), null); campaign.setStartDate(startDate); // Set the campaign end date. This example uses one month from today's date. Calendar nextMonth = Calendar.getInstance(); nextMonth.add(Calendar.MONTH, 1); DateTime endDate = new DateTime(true, nextMonth.getTimeInMillis(), null); campaign.setEndDate(endDate);
-
Для сохранения кампании вызовите метод
campaigns.insert().// Insert the campaign. Campaign result = reporting.campaigns().insert(profileId, campaign).execute();
PHP
Создайте объект
Campaignи задайте для него необходимые свойства:-
advertiserId— рекламодатель, с которым будет связана эта кампания. -
name— оно должно быть уникальным во всех рекламных кампаниях данного рекламодателя. -
defaultLandingPageId— целевая страница, на которую будут перенаправлены пользователи при клике на объявление в этой кампании, если для этого объявления такая страница еще не назначена. Вы можете найти существующие целевые страницы, вызвавadvertiserLandingPages.list, или создать новую, вызвавadvertiserLandingPages.insert. - Даты начала и окончания — они должны быть в будущем и могут быть точными до дня. Более подробную информацию см. в разделе «Даты и время» в общей информации о кодировании . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к дате окончания кампании.
$startDate = new DateTime('today'); $endDate = new DateTime('+1 month'); $campaign = new Google_Service_Dfareporting_Campaign(); $campaign->setAdvertiserId($values['advertiser_id']); $campaign->setDefaultLandingPageId($values['default_landing_page_id']); $campaign->setName($values['campaign_name']); $campaign->setStartDate($startDate->format('Y-m-d')); $campaign->setEndDate($endDate->format('Y-m-d'));
-
Для сохранения кампании вызовите метод
campaigns.insert().$result = $this->service->campaigns->insert( $values['user_profile_id'], $campaign );
Python
Создайте объект
Campaignи задайте для него необходимые свойства:-
advertiserId— рекламодатель, с которым будет связана эта кампания. -
name— оно должно быть уникальным во всех рекламных кампаниях данного рекламодателя. -
defaultLandingPageId— целевая страница, на которую будут перенаправлены пользователи при клике на объявление в этой кампании, если для этого объявления такая страница еще не назначена. Вы можете найти существующие целевые страницы, вызвавadvertiserLandingPages.list, или создать новую, вызвавadvertiserLandingPages.insert. - Даты начала и окончания — они должны быть в будущем и могут быть точными до дня. Более подробную информацию см. в разделе «Даты и время» в общей информации о кодировании . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к дате окончания кампании.
# Locate an advertiser landing page to use as a default. default_landing_page = get_advertiser_landing_page(service, profile_id, advertiser_id) # Construct and save campaign. campaign = { 'name': 'Test Campaign #%s' % uuid.uuid4(), 'advertiserId': advertiser_id, 'archived': 'false', 'defaultLandingPageId': default_landing_page['id'], 'startDate': '2015-01-01', 'endDate': '2020-01-01' }
-
Для сохранения кампании вызовите метод
campaigns.insert().request = service.campaigns().insert(profileId=profile_id, body=campaign) # Execute request and print response. response = request.execute()
Руби
Создайте объект
Campaignи задайте для него необходимые свойства:-
advertiserId— рекламодатель, с которым будет связана эта кампания. -
name— оно должно быть уникальным во всех рекламных кампаниях данного рекламодателя. -
defaultLandingPageId— целевая страница, на которую будут перенаправлены пользователи при клике на объявление в этой кампании, если для этого объявления такая страница еще не назначена. Вы можете найти существующие целевые страницы, вызвавadvertiserLandingPages.list, или создать новую, вызвавadvertiserLandingPages.insert. - Даты начала и окончания — они должны быть в будущем и могут быть точными до дня. Более подробную информацию см. в разделе «Даты и время» в общей информации о кодировании . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к дате окончания кампании.
# Locate an advertiser landing page to use as a default. default_landing_page = get_advertiser_landing_page(service, profile_id, advertiser_id) # Create a new campaign resource to insert. campaign = DfareportingUtils::API_NAMESPACE::Campaign.new( advertiser_id: advertiser_id, archived: false, default_landing_page_id: default_landing_page.id, name: format('Example Campaign #%s', SecureRandom.hex(3)), start_date: '2014-01-01', end_date: '2020-01-01' )
-
Для сохранения кампании вызовите метод
campaigns.insert().# Insert the campaign. result = service.insert_campaign(profile_id, campaign)
Создать размещение
C#
- Создайте объект
Placementи задайте необходимые свойства размещения (включаяcampaignIdиsiteId). Также убедитесь, что тип и размер размещения указаны точно в соответствии с условиями, согласованными с вашим сайтом.// Create the placement. Placement placement = new Placement(); placement.Name = placementName; placement.CampaignId = campaignId; placement.Compatibility = "DISPLAY"; placement.PaymentSource = "PLACEMENT_AGENCY_PAID"; placement.SiteId = dfaSiteId; placement.TagFormats = new List<string>() { "PLACEMENT_TAG_STANDARD" }; // Set the size of the placement. Size size = new Size(); size.Id = sizeId; placement.Size = size;
- Создайте новый объект
PricingSchedule, который будет назначен месту размещения.// Set the pricing schedule for the placement. PricingSchedule pricingSchedule = new PricingSchedule(); pricingSchedule.EndDate = campaign.EndDate; pricingSchedule.PricingType = "PRICING_TYPE_CPM"; pricingSchedule.StartDate = campaign.StartDate; placement.PricingSchedule = pricingSchedule;
- Сохраните объект
Placement, вызвав методplacements.insert(). Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.// Insert the placement. Placement result = service.Placements.Insert(placement, profileId).Execute();
Java
- Создайте объект
Placementи задайте необходимые свойства размещения (включаяcampaignIdиsiteId). Также убедитесь, что тип и размер размещения указаны точно в соответствии с условиями, согласованными с вашим сайтом.// Create the placement. Placement placement = new Placement(); placement.setName(placementName); placement.setCampaignId(campaignId); placement.setCompatibility("DISPLAY"); placement.setPaymentSource("PLACEMENT_AGENCY_PAID"); placement.setSiteId(dfaSiteId); placement.setTagFormats(ImmutableList.of("PLACEMENT_TAG_STANDARD")); // Set the size of the placement. Size size = new Size(); size.setId(sizeId); placement.setSize(size);
- Создайте новый объект
PricingSchedule, который будет назначен месту размещения.// Set the pricing schedule for the placement. PricingSchedule pricingSchedule = new PricingSchedule(); pricingSchedule.setEndDate(campaign.getEndDate()); pricingSchedule.setPricingType("PRICING_TYPE_CPM"); pricingSchedule.setStartDate(campaign.getStartDate()); placement.setPricingSchedule(pricingSchedule);
- Сохраните объект
Placement, вызвав методplacements.insert(). Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.// Insert the placement. Placement result = reporting.placements().insert(profileId, placement).execute();
PHP
- Создайте объект
Placementи задайте необходимые свойства размещения (включаяcampaignIdиsiteId). Также убедитесь, что тип и размер размещения указаны точно в соответствии с условиями, согласованными с вашим сайтом.$placement = new Google_Service_Dfareporting_Placement(); $placement->setCampaignId($values['campaign_id']); $placement->setCompatibility('DISPLAY'); $placement->setName($values['placement_name']); $placement->setPaymentSource('PLACEMENT_AGENCY_PAID'); $placement->setSiteId($values['site_id']); $placement->setTagFormats(['PLACEMENT_TAG_STANDARD']); // Set the size of the placement. $size = new Google_Service_Dfareporting_Size(); $size->setId($values['size_id']); $placement->setSize($size);
- Создайте новый объект
PricingSchedule, который будет назначен месту размещения.// Set the pricing schedule for the placement. $pricingSchedule = new Google_Service_Dfareporting_PricingSchedule(); $pricingSchedule->setEndDate($campaign->getEndDate()); $pricingSchedule->setPricingType('PRICING_TYPE_CPM'); $pricingSchedule->setStartDate($campaign->getStartDate()); $placement->setPricingSchedule($pricingSchedule);
- Сохраните объект
Placement, вызвав методplacements.insert(). Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.// Insert the placement. $result = $this->service->placements->insert( $values['user_profile_id'], $placement );
Python
- Создайте объект
Placementи задайте необходимые свойства размещения (включаяcampaignIdиsiteId). Также убедитесь, что тип и размер размещения указаны точно в соответствии с условиями, согласованными с вашим сайтом.# Construct and save placement. placement = { 'name': 'Test Placement', 'campaignId': campaign_id, 'compatibility': 'DISPLAY', 'siteId': site_id, 'size': { 'height': '1', 'width': '1' }, 'paymentSource': 'PLACEMENT_AGENCY_PAID', 'tagFormats': ['PLACEMENT_TAG_STANDARD'] }
- Создайте новый объект
PricingSchedule, который будет назначен месту размещения.# Set the pricing schedule for the placement. placement['pricingSchedule'] = { 'startDate': campaign['startDate'], 'endDate': campaign['endDate'], 'pricingType': 'PRICING_TYPE_CPM' }
- Сохраните объект
Placement, вызвав методplacements.insert(). Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.request = service.placements().insert(profileId=profile_id, body=placement) # Execute request and print response. response = request.execute()
Руби
- Создайте объект
Placementи задайте необходимые свойства размещения (включаяcampaignIdиsiteId). Также убедитесь, что тип и размер размещения указаны точно в соответствии с условиями, согласованными с вашим сайтом.# Create a new placement resource to insert. placement = DfareportingUtils::API_NAMESPACE::Placement.new( campaign_id: campaign_id, compatibility: 'DISPLAY', name: 'Example Placement', payment_source: 'PLACEMENT_AGENCY_PAID', site_id: site_id, size: DfareportingUtils::API_NAMESPACE::Size.new( height: 1, width: 1 ), tag_formats: ['PLACEMENT_TAG_STANDARD'] )
- Создайте новый объект
PricingSchedule, который будет назначен месту размещения.# Set the pricing schedule for the placement. placement.pricing_schedule = DfareportingUtils::API_NAMESPACE::PricingSchedule.new( end_date: campaign.end_date, pricing_type: 'PRICING_TYPE_CPM', start_date: campaign.start_date )
- Сохраните объект
Placement, вызвав методplacements.insert(). Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.# Insert the placement strategy. result = service.insert_placement(profile_id, placement)
Загрузка ресурсов
Загружать различные типы ресурсов можно с помощью процесса, известного как загрузка медиафайлов . Хотя этот процесс одинаков для всех видов творчества, для некоторых типов может потребоваться передача определенных свойств в качестве метаданных для их корректного использования.
C#
Создайте объект
assetIdentifierи задайте необходимые свойства. Для всех ресурсов, независимо от типа или способа использования, необходимо указатьassetIdentifier. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Необходимы следующие свойства:- Свойство
nameбудет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено. - Свойство
typeопределяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
// Create the creative asset ID and Metadata. CreativeAssetId assetId = new CreativeAssetId(); assetId.Name = Path.GetFileName(assetFile); assetId.Type = assetType;
- Свойство
Загрузите файл, вызвав метод
creativeAssets.insert(). Выполните многокомпонентную загрузку , передав в одном запросе какassetIdentifier, так и содержимое файла. В случае успеха будет возвращен ресурсCreativeAssetсassetIdentifier, который вы будете использовать для назначения этого ресурса креативу.// Prepare an input stream. FileStream assetContent = new FileStream(assetFile, FileMode.Open, FileAccess.Read); CreativeAssetMetadata metaData = new CreativeAssetMetadata(); metaData.AssetIdentifier = assetId; // Insert the creative. String mimeType = determineMimeType(assetFile, assetType); CreativeAssetsResource.InsertMediaUpload request = Service.CreativeAssets.Insert(metaData, ProfileId, AdvertiserId, assetContent, mimeType); IUploadProgress progress = request.Upload(); if (UploadStatus.Failed.Equals(progress.Status)) { throw progress.Exception; }
Java
Создайте объект
assetIdentifierи задайте необходимые свойства. Для всех ресурсов, независимо от типа или способа использования, необходимо указатьassetIdentifier. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Необходимы следующие свойства:- Свойство
nameбудет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено. - Свойство
typeопределяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
// Create the creative asset ID and Metadata. CreativeAssetId assetId = new CreativeAssetId(); assetId.setName(assetName); assetId.setType(assetType);
- Свойство
Загрузите файл, вызвав метод
creativeAssets.insert(). Выполните многокомпонентную загрузку , передав в одном запросе какassetIdentifier, так и содержимое файла. В случае успеха будет возвращен ресурсCreativeAssetсassetIdentifier, который вы будете использовать для назначения этого ресурса креативу.// Open the asset file. File file = new File(assetFile); // Prepare an input stream. String contentType = getMimeType(assetFile); InputStreamContent assetContent = new InputStreamContent(contentType, new BufferedInputStream(new FileInputStream(file))); assetContent.setLength(file.length()); CreativeAssetMetadata metaData = new CreativeAssetMetadata(); metaData.setAssetIdentifier(assetId); // Insert the creative. CreativeAssetMetadata result = reporting.creativeAssets() .insert(profileId, advertiserId, metaData, assetContent).execute();
PHP
Создайте объект
assetIdentifierи задайте необходимые свойства. Для всех ресурсов, независимо от типа или способа использования, необходимо указатьassetIdentifier. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Необходимы следующие свойства:- Свойство
nameбудет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено. - Свойство
typeопределяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
$assetId = new Google_Service_Dfareporting_CreativeAssetId(); $assetId->setName($asset['name']); $assetId->setType($type);
- Свойство
Загрузите файл, вызвав метод
creativeAssets.insert(). Выполните многокомпонентную загрузку , передав в одном запросе какassetIdentifier, так и содержимое файла. В случае успеха будет возвращен ресурсCreativeAssetсassetIdentifier, который вы будете использовать для назначения этого ресурса креативу.$metadata = new Google_Service_Dfareporting_CreativeAssetMetadata(); $metadata->setAssetIdentifier($assetId); $result = $service->creativeAssets->insert( $userProfileId, $advertiserId, $metadata, ['data' => file_get_contents($asset['tmp_name']), 'mimeType' => $asset['type'], 'uploadType' => 'multipart'] );
Python
Создайте объект
assetIdentifierи задайте необходимые свойства. Для всех ресурсов, независимо от типа или способа использования, необходимо указатьassetIdentifier. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Необходимы следующие свойства:- Свойство
nameбудет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено. - Свойство
typeопределяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
# Construct the creative asset metadata creative_asset = {'assetIdentifier': {'name': asset_name, 'type': asset_type}}
- Свойство
Загрузите файл, вызвав метод
creativeAssets.insert(). Выполните многокомпонентную загрузку , передав в одном запросе какassetIdentifier, так и содержимое файла. В случае успеха будет возвращен ресурсCreativeAssetсassetIdentifier, который вы будете использовать для назначения этого ресурса креативу.media = MediaFileUpload(path_to_asset_file) if not media.mimetype(): media = MediaFileUpload(path_to_asset_file, 'application/octet-stream') response = service.creativeAssets().insert( advertiserId=advertiser_id, profileId=profile_id, media_body=media, body=creative_asset).execute()
Руби
Создайте объект
assetIdentifierи задайте необходимые свойства. Для всех ресурсов, независимо от типа или способа использования, необходимо указатьassetIdentifier. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Необходимы следующие свойства:- Свойство
nameбудет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено. - Свойство
typeопределяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
# Construct the creative asset metadata creative_asset = DfareportingUtils::API_NAMESPACE::CreativeAsset.new( asset_identifier: DfareportingUtils::API_NAMESPACE::CreativeAssetId.new( name: asset_name, type: asset_type ) )
- Свойство
Загрузите файл, вызвав метод
creativeAssets.insert(). Выполните многокомпонентную загрузку , передав в одном запросе какassetIdentifier, так и содержимое файла. В случае успеха будет возвращен ресурсCreativeAssetсassetIdentifier, который вы будете использовать для назначения этого ресурса креативу.# Upload the asset. mime_type = determine_mime_type(path_to_asset_file, asset_type) result = @service.insert_creative_asset( @profile_id, advertiser_id, creative_asset, content_type: mime_type, upload_source: path_to_asset_file )
Создайте креатив
Объект Creative представляет собой обертку для существующего ресурса. В зависимости от того, как вы будете использовать креативы на главной странице, вы можете создавать объекты Creative различных типов. Обратитесь к справочной документации , чтобы определить, какой тип подходит именно вам.
В следующем примере показано, как создать новый рекламный баннер на основе HTML5.
C#
- Загрузите ресурсы. Для разных креативов требуются разные типы и количество ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете ресурс, в ответе вы получаете
assetIdenfitier; для ссылки на эти ресурсы в вашем креативе вы будете использовать сохраненное имя файла и тип, а не традиционный идентификатор. - Создайте креатив и присвойте ему соответствующие значения. Создайте экземпляр
Creativeи задайте правильныйtype; изменить тип объектаCreativeпосле его сохранения невозможно. Укажите ресурсы по ихAssetIdentifierиrole.// Locate an advertiser landing page to use as a default. LandingPage defaultLandingPage = getAdvertiserLandingPage(service, profileId, advertiserId); // Create the creative structure. Creative creative = new Creative(); creative.AdvertiserId = advertiserId; creative.Name = "Test HTML5 display creative"; creative.Size = new Size() { Id = sizeId }; creative.Type = "DISPLAY"; // Upload the HTML5 asset. CreativeAssetUtils assetUtils = new CreativeAssetUtils(service, profileId, advertiserId); CreativeAssetId html5AssetId = assetUtils.uploadAsset(pathToHtml5AssetFile, "HTML").AssetIdentifier; CreativeAsset html5Asset = new CreativeAsset(); html5Asset.AssetIdentifier = html5AssetId; html5Asset.Role = "PRIMARY"; // Upload the backup image asset. CreativeAssetId imageAssetId = assetUtils.uploadAsset(pathToImageAssetFile, "HTML_IMAGE").AssetIdentifier; CreativeAsset imageAsset = new CreativeAsset(); imageAsset.AssetIdentifier = imageAssetId; imageAsset.Role = "BACKUP_IMAGE"; // Add the creative assets. creative.CreativeAssets = new List<CreativeAsset>() { html5Asset, imageAsset }; // Configure the bacup image. creative.BackupImageClickThroughUrl = new CreativeClickThroughUrl() { LandingPageId = defaultLandingPage.Id }; creative.BackupImageReportingLabel = "backup"; creative.BackupImageTargetWindow = new TargetWindow() { TargetWindowOption = "NEW_WINDOW" }; // Add a click tag. ClickTag clickTag = new ClickTag(); clickTag.Name = "clickTag"; clickTag.EventName = "exit"; clickTag.ClickThroughUrl = new CreativeClickThroughUrl() { LandingPageId = defaultLandingPage.Id }; creative.ClickTags = new List<ClickTag>() { clickTag };
- Сохраните креатив. Для этого вызовите метод
creatives.insert(). Необходимо указать идентификатор рекламодателя, с которым будет связан этот креатив.Creative result = service.Creatives.Insert(creative, profileId).Execute();
- (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав метод
campaignCreativeAssociations.insert()и передав идентификаторы кампании и креатива.// Create the campaign creative association structure. CampaignCreativeAssociation association = new CampaignCreativeAssociation(); association.CreativeId = creativeId; // Insert the association. CampaignCreativeAssociation result = service.CampaignCreativeAssociations.Insert(association, profileId, campaignId).Execute();
Java
- Загрузите ресурсы. Для разных креативов требуются разные типы и количество ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете ресурс, в ответе вы получаете
assetIdenfitier; для ссылки на эти ресурсы в вашем креативе вы будете использовать сохраненное имя файла и тип, а не традиционный идентификатор. - Создайте креатив и присвойте ему соответствующие значения. Создайте экземпляр
Creativeи задайте правильныйtype; изменить тип объектаCreativeпосле его сохранения невозможно. Укажите ресурсы по ихAssetIdentifierиrole.// Locate an advertiser landing page to use as a default. LandingPage defaultLandingPage = getAdvertiserLandingPage(reporting, profileId, advertiserId); // Create the creative structure. Creative creative = new Creative(); creative.setAdvertiserId(advertiserId); creative.setName("Test HTML5 display creative"); creative.setSize(new Size().setId(sizeId)); creative.setType("DISPLAY"); // Upload the HTML5 asset. CreativeAssetId html5AssetId = CreativeAssetUtils.uploadAsset(reporting, profileId, advertiserId, HTML5_ASSET_NAME, PATH_TO_HTML5_ASSET_FILE, "HTML").getAssetIdentifier(); CreativeAsset html5Asset = new CreativeAsset().setAssetIdentifier(html5AssetId).setRole("PRIMARY"); // Upload the backup image asset (note: asset type must be set to HTML_IMAGE). CreativeAssetId imageAssetId = CreativeAssetUtils.uploadAsset(reporting, profileId, advertiserId, IMAGE_ASSET_NAME, PATH_TO_IMAGE_ASSET_FILE, "HTML_IMAGE") .getAssetIdentifier(); CreativeAsset backupImageAsset = new CreativeAsset().setAssetIdentifier(imageAssetId).setRole("BACKUP_IMAGE"); // Add the creative assets. creative.setCreativeAssets(ImmutableList.of(html5Asset, backupImageAsset)); // Configure the backup image. creative.setBackupImageClickThroughUrl( new CreativeClickThroughUrl().setLandingPageId(defaultLandingPage.getId())); creative.setBackupImageReportingLabel("backup"); creative.setBackupImageTargetWindow(new TargetWindow().setTargetWindowOption("NEW_WINDOW")); // Add a click tag. ClickTag clickTag = new ClickTag().setName("clickTag").setEventName("exit").setClickThroughUrl( new CreativeClickThroughUrl().setLandingPageId(defaultLandingPage.getId())); creative.setClickTags(ImmutableList.of(clickTag));
- Сохраните креатив. Для этого вызовите метод
creatives.insert(). Необходимо указать идентификатор рекламодателя, с которым будет связан этот креатив.Creative result = reporting.creatives().insert(profileId, creative).execute();
- (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав метод
campaignCreativeAssociations.insert()и передав идентификаторы кампании и креатива.// Create the campaign creative association structure. CampaignCreativeAssociation association = new CampaignCreativeAssociation(); association.setCreativeId(creativeId); // Insert the association. CampaignCreativeAssociation result = reporting .campaignCreativeAssociations().insert(profileId, campaignId, association) .execute();
PHP
- Загрузите ресурсы. Для разных креативов требуются разные типы и количество ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете ресурс, в ответе вы получаете
assetIdenfitier; для ссылки на эти ресурсы в вашем креативе вы будете использовать сохраненное имя файла и тип, а не традиционный идентификатор. - Создайте креатив и присвойте ему соответствующие значения. Создайте экземпляр
Creativeи задайте правильныйtype; изменить тип объектаCreativeпосле его сохранения невозможно. Укажите ресурсы по ихAssetIdentifierиrole.$creative = new Google_Service_Dfareporting_Creative(); $creative->setAdvertiserId($values['advertiser_id']); $creative->setAutoAdvanceImages(true); $creative->setName('Test HTML5 display creative'); $creative->setType('DISPLAY'); $size = new Google_Service_Dfareporting_Size(); $size->setId($values['size_id']); $creative->setSize($size); // Upload the HTML5 asset. $html = uploadAsset( $this->service, $values['user_profile_id'], $values['advertiser_id'], $values['html_asset_file'], 'HTML' ); $htmlAsset = new Google_Service_Dfareporting_CreativeAsset(); $htmlAsset->setAssetIdentifier($html->getAssetIdentifier()); $htmlAsset->setRole('PRIMARY'); // Upload the backup image asset. $image = uploadAsset( $this->service, $values['user_profile_id'], $values['advertiser_id'], $values['image_asset_file'], 'HTML_IMAGE' ); $imageAsset = new Google_Service_Dfareporting_CreativeAsset(); $imageAsset->setAssetIdentifier($image->getAssetIdentifier()); $imageAsset->setRole('BACKUP_IMAGE'); // Add the creative assets. $creative->setCreativeAssets([$htmlAsset, $imageAsset]); // Configure the default click-through URL. $clickThroughUrl = new Google_Service_Dfareporting_CreativeClickThroughUrl(); $clickThroughUrl->setLandingPageId($values['landing_page_id']); // Configure the backup image. $creative->setBackupImageClickThroughUrl($clickThroughUrl); $creative->setBackupImageReportingLabel('backup'); $targetWindow = new Google_Service_Dfareporting_TargetWindow(); $targetWindow->setTargetWindowOption('NEW_WINDOW'); $creative->setBackupImageTargetWindow($targetWindow); // Add a click tag. $clickTag = new Google_Service_Dfareporting_ClickTag(); $clickTag->setName('clickTag'); $clickTag->setEventName('exit'); $clickTag->setClickThroughUrl($clickThroughUrl); $creative->setClickTags([$clickTag]);
- Сохраните креатив. Для этого вызовите метод
creatives.insert(). Необходимо указать идентификатор рекламодателя, с которым будет связан этот креатив.$result = $this->service->creatives->insert( $values['user_profile_id'], $creative );
- (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав метод
campaignCreativeAssociations.insert()и передав идентификаторы кампании и креатива.$association = new Google_Service_Dfareporting_CampaignCreativeAssociation(); $association->setCreativeId($values['creative_id']); $result = $this->service->campaignCreativeAssociations->insert( $values['user_profile_id'], $values['campaign_id'], $association );
Python
- Загрузите ресурсы. Для разных креативов требуются разные типы и количество ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете ресурс, в ответе вы получаете
assetIdenfitier; для ссылки на эти ресурсы в вашем креативе вы будете использовать сохраненное имя файла и тип, а не традиционный идентификатор. - Создайте креатив и присвойте ему соответствующие значения. Создайте экземпляр
Creativeи задайте правильныйtype; изменить тип объектаCreativeпосле его сохранения невозможно. Укажите ресурсы по ихAssetIdentifierиrole.# Locate an advertiser landing page to use as a default. default_landing_page = get_advertiser_landing_page(service, profile_id, advertiser_id) # Upload the HTML5 asset html5_asset_id = upload_creative_asset(service, profile_id, advertiser_id, html5_asset_name, path_to_html5_asset_file, 'HTML') # Upload the backup image asset backup_image_asset_id = upload_creative_asset( service, profile_id, advertiser_id, backup_image_name, path_to_backup_image_file, 'HTML_IMAGE') # Construct the creative structure. creative = { 'advertiserId': advertiser_id, 'backupImageClickThroughUrl': { 'landingPageId': default_landing_page['id'] }, 'backupImageReportingLabel': 'backup_image_exit', 'backupImageTargetWindow': {'targetWindowOption': 'NEW_WINDOW'}, 'clickTags': [{ 'eventName': 'exit', 'name': 'click_tag', 'clickThroughUrl': {'landingPageId': default_landing_page['id']} }], 'creativeAssets': [ {'assetIdentifier': html5_asset_id, 'role': 'PRIMARY'}, {'assetIdentifier': backup_image_asset_id, 'role': 'BACKUP_IMAGE'} ], 'name': 'Test HTML5 display creative', 'size': {'id': size_id}, 'type': 'DISPLAY' }
- Сохраните креатив. Для этого вызовите метод
creatives.insert(). Необходимо указать идентификатор рекламодателя, с которым будет связан этот креатив.request = service.creatives().insert(profileId=profile_id, body=creative) # Execute request and print response. response = request.execute()
- (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав метод
campaignCreativeAssociations.insert()и передав идентификаторы кампании и креатива.# Construct the request. association = { 'creativeId': creative_id } request = service.campaignCreativeAssociations().insert( profileId=profile_id, campaignId=campaign_id, body=association) # Execute request and print response. response = request.execute()
Руби
- Загрузите ресурсы. Для разных креативов требуются разные типы и количество ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете ресурс, в ответе вы получаете
assetIdenfitier; для ссылки на эти ресурсы в вашем креативе вы будете использовать сохраненное имя файла и тип, а не традиционный идентификатор. - Создайте креатив и присвойте ему соответствующие значения. Создайте экземпляр
Creativeи задайте правильныйtype; изменить тип объектаCreativeпосле его сохранения невозможно. Укажите ресурсы по ихAssetIdentifierиrole.# Locate an advertiser landing page to use as a default. default_landing_page = get_advertiser_landing_page(service, profile_id, advertiser_id) # Upload the HTML5 asset. html5_asset_id = util.upload_asset(advertiser_id, path_to_html5_asset_file, 'HTML').asset_identifier # Upload the backup image asset. backup_image_asset_id = util.upload_asset(advertiser_id, path_to_backup_image_file, 'HTML_IMAGE').asset_identifier # Construct the creative structure. creative = DfareportingUtils::API_NAMESPACE::Creative.new( advertiser_id: advertiser_id, backup_image_click_through_url: DfareportingUtils::API_NAMESPACE::CreativeClickThroughUrl.new( landing_page_id: default_landing_page.id ), backup_image_reporting_label: 'backup', backup_image_target_window: DfareportingUtils::API_NAMESPACE::TargetWindow.new( target_window_option: 'NEW_WINDOW' ), click_tags: [ DfareportingUtils::API_NAMESPACE::ClickTag.new( event_name: 'exit', name: 'click_tag', click_through_url: DfareportingUtils::API_NAMESPACE::CreativeClickThroughUrl.new( landing_page_id: default_landing_page.id ) ) ], creative_assets: [ DfareportingUtils::API_NAMESPACE::CreativeAsset.new( asset_identifier: html5_asset_id, role: 'PRIMARY' ), DfareportingUtils::API_NAMESPACE::CreativeAsset.new( asset_identifier: backup_image_asset_id, role: 'BACKUP_IMAGE' ) ], name: 'Example HTML5 display creative', size: DfareportingUtils::API_NAMESPACE::Size.new(id: size_id), type: 'DISPLAY' )
- Сохраните креатив. Для этого вызовите метод
creatives.insert(). Необходимо указать идентификатор рекламодателя, с которым будет связан этот креатив.# Insert the creative. result = service.insert_creative(profile_id, creative)
- (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав метод
campaignCreativeAssociations.insert()и передав идентификаторы кампании и креатива.# Create a new creative-campaign association to insert association = DfareportingUtils::API_NAMESPACE::CampaignCreativeAssociation.new( creative_id: creative_id ) # Insert the advertiser group. result = service.insert_campaign_creative_association(profile_id, campaign_id, association)
Создать объявление
Ad — это связующее звено между Creative и Placement . Ad может быть связано с одним или несколькими местами размещения и содержать один или несколько креативов.
Вы можете создать Ad явно или неявно.
Явно
C#
- Создайте объект
CreativeAssignmentдля каждого рекламного объявления, с которым оно должно быть связано. Обязательно установите полеCreativeAssignment.activeв значение true.// Create a click-through URL. ClickThroughUrl clickThroughUrl = new ClickThroughUrl(); clickThroughUrl.DefaultLandingPage = true; // Create a creative assignment. CreativeAssignment creativeAssignment = new CreativeAssignment(); creativeAssignment.Active = true; creativeAssignment.CreativeId = creativeId; creativeAssignment.ClickThroughUrl = clickThroughUrl;
- Создайте объект
CreativeRotationдля хранения заданийCreativeAssignment. При создании группы ротации обязательно задайте остальные необходимые поля для ротации творческих заданий.// Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.CreativeAssignments = new List<CreativeAssignment>() { creativeAssignment };
- Создайте объект
PlacementAssignmentдля каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поляPlacementAssignment.activeзначение true.// Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.Active = true; placementAssignment.PlacementId = placementId;
- Создайте объект
Ad. Установите значение creativeRotation в полеcreativeRotationобъектаAd, а значение placementAssignments — в массивplacementAssignmentsобъектаAd.// Create a delivery schedule. DeliverySchedule deliverySchedule = new DeliverySchedule(); deliverySchedule.ImpressionRatio = 1; deliverySchedule.Priority = "AD_PRIORITY_01"; DateTime startDate = DateTime.Now; DateTime endDate = Convert.ToDateTime(campaign.EndDate); // Create a rotation group. Ad rotationGroup = new Ad(); rotationGroup.Active = true; rotationGroup.CampaignId = campaignId; rotationGroup.CreativeRotation = creativeRotation; rotationGroup.DeliverySchedule = deliverySchedule; rotationGroup.StartTime = startDate; rotationGroup.EndTime = endDate; rotationGroup.Name = adName; rotationGroup.PlacementAssignments = new List<PlacementAssignment>() { placementAssignment }; rotationGroup.Type = "AD_SERVING_STANDARD_AD";
- Сохраните объявление, вызвав метод
ads.insert().// Insert the rotation group. Ad result = service.Ads.Insert(rotationGroup, profileId).Execute();
Java
- Создайте объект
CreativeAssignmentдля каждого рекламного объявления, с которым оно должно быть связано. Обязательно установите полеCreativeAssignment.activeв значение true.// Create a click-through URL. ClickThroughUrl clickThroughUrl = new ClickThroughUrl(); clickThroughUrl.setDefaultLandingPage(true); // Create a creative assignment. CreativeAssignment creativeAssignment = new CreativeAssignment(); creativeAssignment.setActive(true); creativeAssignment.setCreativeId(creativeId); creativeAssignment.setClickThroughUrl(clickThroughUrl);
- Создайте объект
CreativeRotationдля хранения заданийCreativeAssignment. При создании группы ротации обязательно задайте остальные необходимые поля для ротации творческих заданий.// Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.setCreativeAssignments(ImmutableList.of(creativeAssignment));
- Создайте объект
PlacementAssignmentдля каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поляPlacementAssignment.activeзначение true.// Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.setActive(true); placementAssignment.setPlacementId(placementId);
- Создайте объект
Ad. Установите значение creativeRotation в полеcreativeRotationобъектаAd, а значение placementAssignments — в массивplacementAssignmentsобъектаAd.// Create a delivery schedule. DeliverySchedule deliverySchedule = new DeliverySchedule(); deliverySchedule.setImpressionRatio(1L); deliverySchedule.setPriority("AD_PRIORITY_01"); DateTime startDate = new DateTime(new Date()); DateTime endDate = new DateTime(campaign.getEndDate().getValue()); // Create a rotation group. Ad rotationGroup = new Ad(); rotationGroup.setActive(true); rotationGroup.setCampaignId(campaignId); rotationGroup.setCreativeRotation(creativeRotation); rotationGroup.setDeliverySchedule(deliverySchedule); rotationGroup.setStartTime(startDate); rotationGroup.setEndTime(endDate); rotationGroup.setName(adName); rotationGroup.setPlacementAssignments(ImmutableList.of(placementAssignment)); rotationGroup.setType("AD_SERVING_STANDARD_AD");
- Сохраните объявление, вызвав метод
ads.insert().// Insert the rotation group. Ad result = reporting.ads().insert(profileId, rotationGroup).execute();
PHP
- Создайте объект
CreativeAssignmentдля каждого рекламного объявления, с которым оно должно быть связано. Обязательно установите полеCreativeAssignment.activeв значение true.// Create a click-through URL. $url = new Google_Service_Dfareporting_ClickThroughUrl(); $url->setDefaultLandingPage(true); // Create a creative assignment. $creativeAssignment = new Google_Service_Dfareporting_CreativeAssignment(); $creativeAssignment->setActive(true); $creativeAssignment->setCreativeId($values['creative_id']); $creativeAssignment->setClickThroughUrl($url);
- Создайте объект
CreativeRotationдля хранения заданийCreativeAssignment. При создании группы ротации обязательно задайте остальные необходимые поля для ротации творческих заданий.// Create a creative rotation. $creativeRotation = new Google_Service_Dfareporting_CreativeRotation(); $creativeRotation->setCreativeAssignments([$creativeAssignment]);
- Создайте объект
PlacementAssignmentдля каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поляPlacementAssignment.activeзначение true.// Create a placement assignment. $placementAssignment = new Google_Service_Dfareporting_PlacementAssignment(); $placementAssignment->setActive(true); $placementAssignment->setPlacementId($values['placement_id']);
- Создайте объект
Ad. Установите значение creativeRotation в полеcreativeRotationобъектаAd, а значение placementAssignments — в массивplacementAssignmentsобъектаAd.// Create a delivery schedule. $deliverySchedule = new Google_Service_Dfareporting_DeliverySchedule(); $deliverySchedule->setImpressionRatio(1); $deliverySchedule->SetPriority('AD_PRIORITY_01'); $startDate = new DateTime('today'); $endDate = new DateTime($campaign->getEndDate()); // Create a rotation group. $ad = new Google_Service_Dfareporting_Ad(); $ad->setActive(true); $ad->setCampaignId($values['campaign_id']); $ad->setCreativeRotation($creativeRotation); $ad->setDeliverySchedule($deliverySchedule); $ad->setStartTime($startDate->format('Y-m-d') . 'T23:59:59Z'); $ad->setEndTime($endDate->format('Y-m-d') . 'T00:00:00Z'); $ad->setName($values['ad_name']); $ad->setPlacementAssignments([$placementAssignment]); $ad->setType('AD_SERVING_STANDARD_AD');
- Сохраните объявление, вызвав метод
ads.insert().$result = $this->service->ads->insert($values['user_profile_id'], $ad);
Python
- Создайте объект
CreativeAssignmentдля каждого рекламного объявления, с которым оно должно быть связано. Обязательно установите полеCreativeAssignment.activeв значение true.# Construct creative assignment. creative_assignment = { 'active': 'true', 'creativeId': creative_id, 'clickThroughUrl': { 'defaultLandingPage': 'true' } }
- Создайте объект
CreativeRotationдля хранения заданийCreativeAssignment. При создании группы ротации обязательно задайте остальные необходимые поля для ротации творческих заданий.# Construct creative rotation. creative_rotation = { 'creativeAssignments': [creative_assignment], 'type': 'CREATIVE_ROTATION_TYPE_RANDOM', 'weightCalculationStrategy': 'WEIGHT_STRATEGY_OPTIMIZED' }
- Создайте объект
PlacementAssignmentдля каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поляPlacementAssignment.activeзначение true.# Construct placement assignment. placement_assignment = { 'active': 'true', 'placementId': placement_id, }
- Создайте объект
Ad. Установите значение creativeRotation в полеcreativeRotationобъектаAd, а значение placementAssignments — в массивplacementAssignmentsобъектаAd.# Construct delivery schedule. delivery_schedule = { 'impressionRatio': '1', 'priority': 'AD_PRIORITY_01' } # Construct and save ad. ad = { 'active': 'true', 'campaignId': campaign_id, 'creativeRotation': creative_rotation, 'deliverySchedule': delivery_schedule, 'endTime': '%sT00:00:00Z' % campaign['endDate'], 'name': 'Test Rotation Group', 'placementAssignments': [placement_assignment], 'startTime': '%sT23:59:59Z' % time.strftime('%Y-%m-%d'), 'type': 'AD_SERVING_STANDARD_AD' }
- Сохраните объявление, вызвав метод
ads.insert().request = service.ads().insert(profileId=profile_id, body=ad) # Execute request and print response. response = request.execute()
Руби
- Создайте объект
CreativeAssignmentдля каждого рекламного объявления, с которым оно должно быть связано. Обязательно установите полеCreativeAssignment.activeв значение true.# Construct creative assignment. creative_assignment = DfareportingUtils::API_NAMESPACE::CreativeAssignment.new( active: true, creative_id: creative_id, click_through_url: DfareportingUtils::API_NAMESPACE::ClickThroughUrl.new( default_landing_page: true ) )
- Создайте объект
CreativeRotationдля хранения заданийCreativeAssignment. При создании группы ротации обязательно задайте остальные необходимые поля для ротации творческих заданий.# Construct creative rotation. creative_rotation = DfareportingUtils::API_NAMESPACE::CreativeRotation.new( creative_assignments: [creative_assignment], type: 'CREATIVE_ROTATION_TYPE_RANDOM', weight_calculation_strategy: 'WEIGHT_STRATEGY_OPTIMIZED' )
- Создайте объект
PlacementAssignmentдля каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поляPlacementAssignment.activeзначение true.# Construct placement assignment. placement_assignment = DfareportingUtils::API_NAMESPACE::PlacementAssignment.new( active: true, placement_id: placement_id )
- Создайте объект
Ad. Установите значение creativeRotation в полеcreativeRotationобъектаAd, а значение placementAssignments — в массивplacementAssignmentsобъектаAd.# Construct delivery schedule. delivery_schedule = DfareportingUtils::API_NAMESPACE::DeliverySchedule.new( impression_ratio: 1, priority: 'AD_PRIORITY_01' ) # Construct and save ad. ad = DfareportingUtils::API_NAMESPACE::Ad.new( active: true, campaign_id: campaign_id, creative_rotation: creative_rotation, delivery_schedule: delivery_schedule, end_time: format('%sT00:00:00Z', campaign.end_date), name: 'Example Rotation Group', placement_assignments: [placement_assignment], start_time: format('%sT23:59:59Z', Time.now.strftime('%Y-%m-%d')), type: 'AD_SERVING_STANDARD_AD' )
- Сохраните объявление, вызвав метод
ads.insert().result = service.insert_ad(profile_id, ad)
Неявно
C#
- Создать и сохранить
Placement. - Создайте и сохраните
Creative. - Свяжите
Creativeс той жеCampaign, что иPlacement, вызвав методcampaignCreativeAssociations.insert()(см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.// Create the campaign creative association structure. CampaignCreativeAssociation association = new CampaignCreativeAssociation(); association.CreativeId = creativeId; // Insert the association. CampaignCreativeAssociation result = service.CampaignCreativeAssociations.Insert(association, profileId, campaignId).Execute();
Java
- Создать и сохранить
Placement. - Создайте и сохраните
Creative. - Свяжите
Creativeс той жеCampaign, что иPlacement, вызвав методcampaignCreativeAssociations.insert()(см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.// Create the campaign creative association structure. CampaignCreativeAssociation association = new CampaignCreativeAssociation(); association.setCreativeId(creativeId); // Insert the association. CampaignCreativeAssociation result = reporting .campaignCreativeAssociations().insert(profileId, campaignId, association) .execute();
PHP
- Создать и сохранить
Placement. - Создайте и сохраните
Creative. - Свяжите
Creativeс той жеCampaign, что иPlacement, вызвав методcampaignCreativeAssociations.insert()(см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.$association = new Google_Service_Dfareporting_CampaignCreativeAssociation(); $association->setCreativeId($values['creative_id']); $result = $this->service->campaignCreativeAssociations->insert( $values['user_profile_id'], $values['campaign_id'], $association );
Python
- Создать и сохранить
Placement. - Создайте и сохраните
Creative. - Свяжите
Creativeс той жеCampaign, что иPlacement, вызвав методcampaignCreativeAssociations.insert()(см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.# Construct the request. association = { 'creativeId': creative_id } request = service.campaignCreativeAssociations().insert( profileId=profile_id, campaignId=campaign_id, body=association) # Execute request and print response. response = request.execute()
Руби
- Создать и сохранить
Placement. - Создайте и сохраните
Creative. - Свяжите
Creativeс той жеCampaign, что иPlacement, вызвав методcampaignCreativeAssociations.insert()(см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.# Create a new creative-campaign association to insert association = DfareportingUtils::API_NAMESPACE::CampaignCreativeAssociation.new( creative_id: creative_id ) # Insert the advertiser group. result = service.insert_campaign_creative_association(profile_id, campaign_id, association)
Создание объявления автоматически избавляет от необходимости дополнительного шага по Ad созданию. Обратите внимание, что это возможно только в том случае, если в вашей кампании еще не существует объявления по умолчанию указанного размера.
Поиск объектов
Поиск объектов можно выполнить, вызвав операцию list() , предоставляемую сервисом, определяющим искомый объект, указав необязательные критерии, соответствующие типу объекта. Например, для поиска объектов Ad вы вызовете ads.list() . Необязательные критерии предоставляют набор свойств, соответствующих данному объекту; укажите столько свойств, сколько хотите использовать для поиска. Поиск вернет только объекты, которые соответствуют всем вашим критериям; вы не можете выполнить поиск, соответствующий любому из критериев. Строки поддерживают подстановочный знак *, не чувствительны к регистру и соответствуют более длинным строкам.
Для повышения производительности можно запрашивать частичные ответы, используя параметр fields . Это указывает серверу возвращать только указанные вами поля, а не полное представление ресурса. Более подробную информацию по этой теме можно найти в руководстве по повышению производительности .
Пейджинг
Иногда получение всех результатов запроса list() нежелательно. Например, вас могут интересовать только 10 самых новых объявлений из тысяч. Чтобы помочь в этом, многие методы list() позволяют запрашивать меньшее количество результатов с помощью процесса, известного как постраничная навигация .
Методы, поддерживающие постраничную навигацию, возвращают подмножества результатов в группах, называемых страницами . Максимальное количество результатов на странице — 1000 (по умолчанию). Вы можете изменить количество результатов на странице, установив значение maxResults , а также можете перебирать страницы, используя nextPageToken возвращаемый в ответе:
C#
// Limit the fields returned. String fields = "nextPageToken,ads(advertiserId,id,name)"; AdsListResponse result; String nextPageToken = null; do { // Create and execute the ad list request. AdsResource.ListRequest request = service.Ads.List(profileId); request.Active = true; request.Fields = fields; request.PageToken = nextPageToken; result = request.Execute(); foreach (Ad ad in result.Ads) { Console.WriteLine( "Ad with ID {0} and name \"{1}\" is associated with advertiser" + " ID {2}.", ad.Id, ad.Name, ad.AdvertiserId); } // Update the next page token. nextPageToken = result.NextPageToken; } while (result.Ads.Any() && !String.IsNullOrEmpty(nextPageToken));
Java
// Limit the fields returned. String fields = "nextPageToken,ads(advertiserId,id,name)"; AdsListResponse result; String nextPageToken = null; do { // Create and execute the ad list request. result = reporting.ads().list(profileId).setActive(true).setFields(fields) .setPageToken(nextPageToken).execute(); for (Ad ad : result.getAds()) { System.out.printf( "Ad with ID %d and name \"%s\" is associated with advertiser ID %d.%n", ad.getId(), ad.getName(), ad.getAdvertiserId()); } // Update the next page token. nextPageToken = result.getNextPageToken(); } while (!result.getAds().isEmpty() && !Strings.isNullOrEmpty(nextPageToken));
PHP
$response = null; $pageToken = null; do { // Create and execute the ads list request. $response = $this->service->ads->listAds( $values['user_profile_id'], ['active' => true, 'pageToken' => $pageToken] ); foreach ($response->getAds() as $ads) { $this->printResultsTableRow($ads); } // Update the next page token. $pageToken = $response->getNextPageToken(); } while (!empty($response->getAds()) && !empty($pageToken));
Python
# Construct the request. request = service.ads().list(profileId=profile_id, active=True) while True: # Execute request and print response. response = request.execute() for ad in response['ads']: print 'Found ad with ID %s and name "%s".' % (ad['id'], ad['name']) if response['ads'] and response['nextPageToken']: request = service.ads().list_next(request, response) else: break
Руби
token = nil loop do result = service.list_ads(profile_id, page_token: token, fields: 'nextPageToken,ads(id,name)') # Display results. if result.ads.any? result.ads.each do |ad| puts format('Found ad with ID %d and name "%s".', ad.id, ad.name) end token = result.next_page_token else # Stop paging if there are no more results. token = nil end break if token.to_s.empty? end
Сгенерировать метки для прожекторов
Теги Floodlight — это HTML-теги, встроенные в страницу, которые используются для отслеживания действий пользователя (например, покупок) на сайте. Для генерации тегов Floodlight необходим объект FloodlightActivity , принадлежащий к группе FloodlightActivityGroup :
C#
- Создайте новую группу действий для подсветки, передав значения для параметров
name,typeиfloodlightConfigurationId.// Create the floodlight activity group. FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup(); floodlightActivityGroup.Name = groupName; floodlightActivityGroup.FloodlightConfigurationId = floodlightConfigurationId; floodlightActivityGroup.Type = "COUNTER";
- Сохраните группу действий Floodlight, вызвав метод
floodlightActivityGroups.insert(), который вернет идентификатор новой группы.// Insert the activity group. FloodlightActivityGroup result = service.FloodlightActivityGroups.Insert(floodlightActivityGroup, profileId).Execute();
- Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
// Set floodlight activity structure. FloodlightActivity activity = new FloodlightActivity(); activity.CountingMethod = "STANDARD_COUNTING"; activity.Name = activityName; activity.FloodlightActivityGroupId = activityGroupId; activity.FloodlightTagType = "GLOBAL_SITE_TAG"; activity.ExpectedUrl = url;
- Сохраните новое действие, вызвав метод
floodlightActivities.insert(), который вернет идентификатор нового действия.// Create the floodlight tag activity. FloodlightActivity result = service.FloodlightActivities.Insert(activity, profileId).Execute();
- Сгенерируйте теги, вызвав метод
floodlightActivities.generatetag()с идентификаторомfloodlightActivityIdвашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.// Generate the floodlight activity tag. FloodlightActivitiesResource.GeneratetagRequest request = service.FloodlightActivities.Generatetag(profileId); request.FloodlightActivityId = activityId; FloodlightActivitiesGenerateTagResponse response = request.Execute();
Java
- Создайте новую группу действий для подсветки, передав значения для параметров
name,typeиfloodlightConfigurationId.// Create the floodlight activity group. FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup(); floodlightActivityGroup.setName(groupName); floodlightActivityGroup.setFloodlightConfigurationId(floodlightConfigurationId); floodlightActivityGroup.setType("COUNTER");
- Сохраните группу действий Floodlight, вызвав метод
floodlightActivityGroups.insert(), который вернет идентификатор новой группы.// Insert the activity group. FloodlightActivityGroup result = reporting.floodlightActivityGroups().insert(profileId, floodlightActivityGroup).execute();
- Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
// Set floodlight activity structure. FloodlightActivity activity = new FloodlightActivity(); activity.setName(activityName); activity.setCountingMethod("STANDARD_COUNTING"); activity.setExpectedUrl(url); activity.setFloodlightActivityGroupId(activityGroupId); activity.setFloodlightTagType("GLOBAL_SITE_TAG");
- Сохраните новое действие, вызвав метод
floodlightActivities.insert(), который вернет идентификатор нового действия.// Create the floodlight tag activity. FloodlightActivity result = reporting.floodlightActivities().insert(profileId, activity).execute();
- Сгенерируйте теги, вызвав метод
floodlightActivities.generatetag()с идентификаторомfloodlightActivityIdвашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.// Generate the floodlight activity tag. Generatetag request = reporting.floodlightActivities().generatetag(profileId); request.setFloodlightActivityId(activityId); FloodlightActivitiesGenerateTagResponse response = request.execute();
PHP
- Создайте новую группу действий для подсветки, передав значения для параметров
name,typeиfloodlightConfigurationId.$group = new Google_Service_Dfareporting_FloodlightActivityGroup(); $group->setFloodlightConfigurationId($values['configuration_id']); $group->setName($values['group_name']); $group->setType('COUNTER');
- Сохраните группу действий Floodlight, вызвав метод
floodlightActivityGroups.insert(), который вернет идентификатор новой группы.$result = $this->service->floodlightActivityGroups->insert( $values['user_profile_id'], $group );
- Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
$activity = new Google_Service_Dfareporting_FloodlightActivity(); $activity->setCountingMethod('STANDARD_COUNTING'); $activity->setExpectedUrl($values['url']); $activity->setFloodlightActivityGroupId($values['activity_group_id']); $activity->setFloodlightTagType('GLOBAL_SITE_TAG'); $activity->setName($values['activity_name']);
- Сохраните новое действие, вызвав метод
floodlightActivities.insert(), который вернет идентификатор нового действия.$result = $this->service->floodlightActivities->insert( $values['user_profile_id'], $activity );
- Сгенерируйте теги, вызвав метод
floodlightActivities.generatetag()с идентификаторомfloodlightActivityIdвашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.$result = $this->service->floodlightActivities->generatetag( $values['user_profile_id'], ['floodlightActivityId' => $values['activity_id']] );
Python
- Создайте новую группу действий для подсветки, передав значения для параметров
name,typeиfloodlightConfigurationId.# Construct and save floodlight activity group. activity_group = { 'name': 'Test Floodlight Activity Group', 'floodlightConfigurationId': floodlight_config_id, 'type': 'COUNTER' }
- Сохраните группу действий Floodlight, вызвав метод
floodlightActivityGroups.insert(), который вернет идентификатор новой группы.request = service.floodlightActivityGroups().insert( profileId=profile_id, body=activity_group)
- Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
# Construct and save floodlight activity. floodlight_activity = { 'countingMethod': 'STANDARD_COUNTING', 'expectedUrl': 'http://www.google.com', 'floodlightActivityGroupId': activity_group_id, 'floodlightTagType': 'GLOBAL_SITE_TAG', 'name': 'Test Floodlight Activity' }
- Сохраните новое действие, вызвав метод
floodlightActivities.insert(), который вернет идентификатор нового действия.request = service.floodlightActivities().insert( profileId=profile_id, body=floodlight_activity)
- Сгенерируйте теги, вызвав метод
floodlightActivities.generatetag()с идентификаторомfloodlightActivityIdвашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.# Construct the request. request = service.floodlightActivities().generatetag( profileId=profile_id, floodlightActivityId=activity_id) # Execute request and print response. response = request.execute()
Руби
- Создайте новую группу действий для подсветки, передав значения для параметров
name,typeиfloodlightConfigurationId.# Create a new floodlight activity group resource to insert. activity_group = DfareportingUtils::API_NAMESPACE::FloodlightActivityGroup.new( floodlight_configuration_id: floodlight_config_id, name: format('Example Floodlight Activity Group #%s', SecureRandom.hex(3)), type: 'COUNTER' )
- Сохраните группу действий Floodlight, вызвав метод
floodlightActivityGroups.insert(), который вернет идентификатор новой группы.# Insert the floodlight activity group. result = service.insert_floodlight_activity_group(profile_id, activity_group)
- Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
# Create a new floodlight activity resource to insert. activity = DfareportingUtils::API_NAMESPACE::FloodlightActivity.new( counting_method: 'STANDARD_COUNTING', expected_url: 'http://www.google.com', floodlight_activity_group_id: activity_group_id, floodlight_tag_type: 'GLOBAL_SITE_TAG', name: format('Example Floodlight Activity #%s', SecureRandom.hex(3)) )
- Сохраните новое действие, вызвав метод
floodlightActivities.insert(), который вернет идентификатор нового действия.# Insert the floodlight activity. result = service.insert_floodlight_activity(profile_id, activity)
- Сгенерируйте теги, вызвав метод
floodlightActivities.generatetag()с идентификаторомfloodlightActivityIdвашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.# Construct the request. result = service.generatetag_floodlight_activity(profile_id, floodlight_activity_id: activity_id)
Сгенерировать теги размещения
Последний шаг — генерация HTML-тегов для отправки издателю с целью показа вашей рекламы. Чтобы сгенерировать теги через API, отправьте запрос к placements.generatetags() , указав набор placementIds и tagFormats .
C#
// Generate the placement activity tags. PlacementsResource.GeneratetagsRequest request = service.Placements.Generatetags(profileId); request.CampaignId = campaignId; request.TagFormats = PlacementsResource.GeneratetagsRequest.TagFormatsEnum.PLACEMENTTAGIFRAMEJAVASCRIPT; request.PlacementIds = placementId.ToString(); PlacementsGenerateTagsResponse response = request.Execute();
Java
// Generate the placement activity tags. Generatetags request = reporting.placements().generatetags(profileId); request.setCampaignId(campaignId); request.setTagFormats(tagFormats); request.setPlacementIds(ImmutableList.of(placementId)); PlacementsGenerateTagsResponse response = request.execute();
PHP
$placementTags = $this->service->placements->generatetags( $values['user_profile_id'], ['campaignId' => $values['campaign_id'], 'placementIds' => [$values['placement_id']], 'tagFormats' => ['PLACEMENT_TAG_STANDARD', 'PLACEMENT_TAG_IFRAME_JAVASCRIPT', 'PLACEMENT_TAG_INTERNAL_REDIRECT'] ] );
Python
# Construct the request. request = service.placements().generatetags( profileId=profile_id, campaignId=campaign_id, placementIds=[placement_id]) # Execute request and print response. response = request.execute()
Руби
# Construct the request. result = service.generate_placement_tags(profile_id, campaign_id: campaign_id, placement_ids: [placement_id])