На этой странице описано, как выполнить некоторые наиболее распространенные задачи по управлению трафиком с помощью API отчетов и управления трафиком DCM/DFA.
Общие советы по кодированию
- Обязательные и необязательные свойства и параметры . Чтобы узнать, требуется ли свойство или параметр для вызова API, см. справочную документацию .
- Поиск имен по подстановочным знакам . При поиске по именам объектов можно использовать подстановочный знак звездочки (*). Звездочка соответствует нулю или более любому символу. API также поддерживает неявный поиск подстроки, поэтому поиск «abc» будет неявно искать «*abc*».
- Обновление или исправление . Чтобы изменить существующий объект, у вас есть два варианта:
- Обновление . При обновлении объекта все поля будут перезаписаны при вставке. Важно загрузить объект, который вы хотите обновить, и внести в этот объект любые изменения. В противном случае все поля, отсутствующие в запросе на обновление, будут удалены.
- Исправление — при исправлении при вставке будут перезаписаны только указанные поля. В этом случае вы можете создать новый объект, присвоить ему тот же идентификатор, что и обновляемый объект, установить обновляемые поля и выполнить запрос на исправление.
- Размеры . Физические размеры представлены объектом
Size
, определенным службой размеров . Учетная запись предоставляет набор стандартных размеров, и вы можете добавить в этот список свои собственные размеры. - Даты и время . Вы можете сохранять дату/время в формате RFC 3339 , используя местные часовые пояса; все значения, возвращаемые API, указаны в формате UTC. Это отличается от веб-сайта, где даты и время отображаются в настроенном вами часовом поясе (по умолчанию время Америки/Нью-Йорка).
Создать рекламодателя
- Создайте объект
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();
- Создайте объект
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();
- Создайте объект
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
);
- Создайте объект
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)
Создать кампанию
Создайте объект
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();
Создайте объект
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();
Создайте объект
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
);
Создайте объект
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)
Создать место размещения
- Создайте объект
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()
. Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.// Insert the placement.
Placement result = service.Placements.Insert(placement, profileId).Execute();
- Создайте объект
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()
. Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.// Insert the placement.
Placement result = reporting.placements().insert(profileId, placement).execute();
- Создайте объект
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()
. Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.// Insert the placement.
$result = $this->service->placements->insert(
$values['user_profile_id'],
$placement
);
- Создайте объект
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()
. Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.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()
. Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.# Insert the placement strategy.
result = service.insert_placement(profile_id, placement)
Загрузить ресурсы
Вы можете загрузить множество типов ресурсов с помощью процесса, известного как загрузка мультимедиа . Хотя этот процесс аналогичен для всех типов объявлений, для правильного использования некоторых типов может потребоваться передача определенных свойств в качестве метаданных.
Создайте объект
assetIdentifier
и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указатьassetIdentifier
. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:- Свойство
name
, которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 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;
}
Создайте объект
assetIdentifier
и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указатьassetIdentifier
. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:- Свойство
name
, которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 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();
Создайте объект
assetIdentifier
и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указатьassetIdentifier
. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:- Свойство
name
, которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 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']
);
Создайте объект
assetIdentifier
и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указатьassetIdentifier
. При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:- Свойство
name
, которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 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, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 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.
- Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор
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();
- Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор
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();
- Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор
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
);
- Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор
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
явно или неявно.
Явно
- Создайте объект
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();
- Создайте объект
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();
- Создайте объект
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);
- Создайте объект
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)
Неявно
- Создайте и сохраните
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();
- Создайте и сохраните
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();
- Создайте и сохраните
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
);
- Создайте и сохраните
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
, возвращаемый в ответе:
// 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));
// 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));
$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));
# 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
:
- Создайте новую группу действий Floodlight, передав значения
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(); - Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
// 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();
- Создайте новую группу действий Floodlight, передав значения
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(); - Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
// 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();
- Создайте новую группу действий Floodlight, передав значения
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
); - Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
$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']]
);
- Создайте новую группу действий Floodlight, передав значения
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) - Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
# 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()
- Создайте новую группу действий Floodlight, передав значения
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) - Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
# 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
.
// 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();
// 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();
$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']
]
);
# 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])