Esta página descreve como executar algumas tarefas de tráfego mais comuns usando a API DCM/DFA Reporting and Trafficking.
Dicas gerais de codificação
- Propriedades e parâmetros obrigatórios e opcionais: consulte a documentação de referência para saber se determinadas propriedades ou parâmetros são obrigatórios para uma chamada de API.
- Pesquisas de nomes com caractere curinga: use o asterisco (*) como curinga ao pesquisar nomes de objetos. Um asterisco corresponde a nenhum ou a mais de um caractere. A API também é compatível com uma pesquisa implícita de substring, de modo que uma pesquisa por "abc" será uma pesquisa implícita por "*abc*".
- Comparação entre atualizar e corrigir: para modificar um objeto, há duas opções:
- Atualizar: ao atualizar um objeto, todos os campos serão substituídos na inserção. É importante carregar o objeto que você quer atualizar e fazer as alterações nesse objeto. Caso contrário, os campos ausentes na solicitação de atualização serão desconfigurados.
- Corrigir: ao fazer uma correção, somente os campos especificados serão substituídos na inserção. Nesse caso, é possível criar um novo objeto, atribuir o mesmo ID do objeto que será atualizado, definir os campos que serão atualizados e executar a solicitação de patch.
- Tamanhos: as dimensões físicas são representadas por um objeto
Size
definido pelo serviço de tamanhos. A conta fornece um conjunto de tamanhos padrão, e é possível adicionar tamanhos personalizados à lista. - Datas e horários: é possível salvar datas/horários no formato RFC 3339 usando fusos horários locais. Todos os valores retornados pela API estão no fuso UTC. Isso é diferente dos sites em que datas e horários são exibidos no seu fuso horário configurado (horário dos Estados Unidos/Nova York por padrão).
Criar um anunciante
C#
-
Crie um objeto
Advertiser
e defina as propriedades obrigatórias de nome e status.// Create the advertiser structure. Advertiser advertiser = new Advertiser(); advertiser.Name = advertiserName; advertiser.Status = "APPROVED";
-
Chame
advertisers.insert()
para salvar o anunciante.// Create the advertiser. Advertiser result = service.Advertisers.Insert(advertiser, profileId).Execute();
Java
-
Crie um objeto
Advertiser
e defina as propriedades obrigatórias de nome e status.// Create the advertiser structure. Advertiser advertiser = new Advertiser(); advertiser.setName(advertiserName); advertiser.setStatus("APPROVED");
-
Chame
advertisers.insert()
para salvar o anunciante.// Create the advertiser. Advertiser result = reporting.advertisers().insert(profileId, advertiser).execute();
PHP
-
Crie um objeto
Advertiser
e defina as propriedades obrigatórias de nome e status.$advertiser = new Google_Service_Dfareporting_Advertiser(); $advertiser->setName($values['advertiser_name']); $advertiser->setStatus('APPROVED');
-
Chame
advertisers.insert()
para salvar o anunciante.$result = $this->service->advertisers->insert( $values['user_profile_id'], $advertiser );
Python
-
Crie um objeto
Advertiser
e defina as propriedades obrigatórias de nome e status.# Construct and save advertiser. advertiser = { 'name': 'Test Advertiser', 'status': 'APPROVED' }
-
Chame
advertisers.insert()
para salvar o anunciante.request = service.advertisers().insert( profileId=profile_id, body=advertiser) # Execute request and print response. response = request.execute()
Ruby
-
Crie um objeto
Advertiser
e defina as propriedades obrigatórias de nome e status.# Create a new advertiser resource to insert. advertiser = DfareportingUtils::API_NAMESPACE::Advertiser.new( name: format('Example Advertiser #%s', SecureRandom.hex(3)), status: 'APPROVED' )
-
Chame
advertisers.insert()
para salvar o anunciante.# Insert the advertiser. result = service.insert_advertiser(profile_id, advertiser)
Criar uma campanha
C#
Crie um objeto
Campaign
e defina as propriedades obrigatórias:-
advertiserId
: é o anunciante que será associado à campanha. -
name
: precisa ser único em todas as campanhas do anunciante. -
defaultLandingPageId
: é uma página de destino para os usuários que clicarem em algum anúncio dessa campanha, caso esse anúncio não tenha uma página atribuída. Para pesquisar as páginas de destino existentes, chameadvertiserLandingPages.list
. Para criar uma nova, chameadvertiserLandingPages.insert
. - Datas de início e de término: é necessário que essas datas sejam futuras, e a precisão pode ser de um dia. Consulte o marcador de datas e horários nas Informações gerais de codificação para saber mais detalhes. As datas de anúncios podem exceder a data de término para que um editor possa cumprir um contrato com um número específico de ações, caso o contrato não tenha sido preenchido até a data de término determinada da campanha.
// 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));
-
Chame
campaigns.insert()
para salvar a campanha.// Insert the campaign. Campaign result = service.Campaigns.Insert(campaign, profileId).Execute();
Java
Crie um objeto
Campaign
e defina as propriedades obrigatórias:-
advertiserId
: é o anunciante que será associado à campanha. -
name
: precisa ser único em todas as campanhas do anunciante. -
defaultLandingPageId
: é uma página de destino para os usuários que clicarem em algum anúncio dessa campanha, caso esse anúncio não tenha uma página atribuída. Para pesquisar as páginas de destino existentes, chameadvertiserLandingPages.list
. Para criar uma nova, chameadvertiserLandingPages.insert
. - Datas de início e de término: é necessário que essas datas sejam futuras, e a precisão pode ser de um dia. Consulte o marcador de datas e horários nas Informações gerais de codificação para saber mais detalhes. As datas de anúncios podem exceder a data de término para que um editor possa cumprir um contrato com um número específico de ações, caso o contrato não tenha sido preenchido até a data de término determinada da campanha.
// 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);
-
Chame
campaigns.insert()
para salvar a campanha.// Insert the campaign. Campaign result = reporting.campaigns().insert(profileId, campaign).execute();
PHP
Crie um objeto
Campaign
e defina as propriedades obrigatórias:-
advertiserId
: é o anunciante que será associado à campanha. -
name
: precisa ser único em todas as campanhas do anunciante. -
defaultLandingPageId
: é uma página de destino para os usuários que clicarem em algum anúncio dessa campanha, caso esse anúncio não tenha uma página atribuída. Para pesquisar as páginas de destino existentes, chameadvertiserLandingPages.list
. Para criar uma nova, chameadvertiserLandingPages.insert
. - Datas de início e de término: é necessário que essas datas sejam futuras, e a precisão pode ser de um dia. Consulte o marcador de datas e horários nas Informações gerais de codificação para saber mais detalhes. As datas de anúncios podem exceder a data de término para que um editor possa cumprir um contrato com um número específico de ações, caso o contrato não tenha sido preenchido até a data de término determinada da campanha.
$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'));
-
Chame
campaigns.insert()
para salvar a campanha.$result = $this->service->campaigns->insert( $values['user_profile_id'], $campaign );
Python
Crie um objeto
Campaign
e defina as propriedades obrigatórias:-
advertiserId
: é o anunciante que será associado à campanha. -
name
: precisa ser único em todas as campanhas do anunciante. -
defaultLandingPageId
: é uma página de destino para os usuários que clicarem em algum anúncio dessa campanha, caso esse anúncio não tenha uma página atribuída. Para pesquisar as páginas de destino existentes, chameadvertiserLandingPages.list
. Para criar uma nova, chameadvertiserLandingPages.insert
. - Datas de início e de término: é necessário que essas datas sejam futuras, e a precisão pode ser de um dia. Consulte o marcador de datas e horários nas Informações gerais de codificação para saber mais detalhes. As datas de anúncios podem exceder a data de término para que um editor possa cumprir um contrato com um número específico de ações, caso o contrato não tenha sido preenchido até a data de término determinada da campanha.
# 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' }
-
Chame
campaigns.insert()
para salvar a campanha.request = service.campaigns().insert(profileId=profile_id, body=campaign) # Execute request and print response. response = request.execute()
Ruby
Crie um objeto
Campaign
e defina as propriedades obrigatórias:-
advertiserId
: é o anunciante que será associado à campanha. -
name
: precisa ser único em todas as campanhas do anunciante. -
defaultLandingPageId
: é uma página de destino para os usuários que clicarem em algum anúncio dessa campanha, caso esse anúncio não tenha uma página atribuída. Para pesquisar as páginas de destino existentes, chameadvertiserLandingPages.list
. Para criar uma nova, chameadvertiserLandingPages.insert
. - Datas de início e de término: é necessário que essas datas sejam futuras, e a precisão pode ser de um dia. Consulte o marcador de datas e horários nas Informações gerais de codificação para saber mais detalhes. As datas de anúncios podem exceder a data de término para que um editor possa cumprir um contrato com um número específico de ações, caso o contrato não tenha sido preenchido até a data de término determinada da campanha.
# 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' )
-
Chame
campaigns.insert()
para salvar a campanha.# Insert the campaign. result = service.insert_campaign(profile_id, campaign)
Criar um canal
C#
-
Crie um objeto
Placement
e defina as propriedades de canal necessárias (incluindocampaignId
esiteId
). Além disso, defina com precisão o tipo e o tamanho do canal que você negociou com seu site.// 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;
-
Crie um novo objeto
PricingSchedule
para atribuir ao canal.// 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;
-
Salve o objeto
Placement
chamandoplacements.insert()
. Guarde o código retornado se você quiser usá-lo para atribuir a um anúncio ou criativo.// Insert the placement. Placement result = service.Placements.Insert(placement, profileId).Execute();
Java
-
Crie um objeto
Placement
e defina as propriedades de canal necessárias (incluindocampaignId
esiteId
). Além disso, defina com precisão o tipo e o tamanho do canal que você negociou com seu site.// 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);
-
Crie um novo objeto
PricingSchedule
para atribuir ao canal.// 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);
-
Salve o objeto
Placement
chamandoplacements.insert()
. Guarde o código retornado se você quiser usá-lo para atribuir a um anúncio ou criativo.// Insert the placement. Placement result = reporting.placements().insert(profileId, placement).execute();
PHP
-
Crie um objeto
Placement
e defina as propriedades de canal necessárias (incluindocampaignId
esiteId
). Além disso, defina com precisão o tipo e o tamanho do canal que você negociou com seu site.$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);
-
Crie um novo objeto
PricingSchedule
para atribuir ao canal.// 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);
-
Salve o objeto
Placement
chamandoplacements.insert()
. Guarde o código retornado se você quiser usá-lo para atribuir a um anúncio ou criativo.// Insert the placement. $result = $this->service->placements->insert( $values['user_profile_id'], $placement );
Python
-
Crie um objeto
Placement
e defina as propriedades de canal necessárias (incluindocampaignId
esiteId
). Além disso, defina com precisão o tipo e o tamanho do canal que você negociou com seu site.# 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'] }
-
Crie um novo objeto
PricingSchedule
para atribuir ao canal.# Set the pricing schedule for the placement. placement['pricingSchedule'] = { 'startDate': campaign['startDate'], 'endDate': campaign['endDate'], 'pricingType': 'PRICING_TYPE_CPM' }
-
Salve o objeto
Placement
chamandoplacements.insert()
. Guarde o código retornado se você quiser usá-lo para atribuir a um anúncio ou criativo.request = service.placements().insert(profileId=profile_id, body=placement) # Execute request and print response. response = request.execute()
Ruby
-
Crie um objeto
Placement
e defina as propriedades de canal necessárias (incluindocampaignId
esiteId
). Além disso, defina com precisão o tipo e o tamanho do canal que você negociou com seu site.# 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'] )
-
Crie um novo objeto
PricingSchedule
para atribuir ao canal.# 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 )
-
Salve o objeto
Placement
chamandoplacements.insert()
. Guarde o código retornado se você quiser usá-lo para atribuir a um anúncio ou criativo.# Insert the placement strategy. result = service.insert_placement(profile_id, placement)
Fazer o upload de materiais
É possível fazer upload de diversos tipos de materiais por meio de um processo conhecido como upload de mídia. Embora esse processo seja parecido em todos os tipos de criativos, alguns tipos exigem propriedades específicas para ser enviados como metadados a fim de ser usados de maneira adequada.
C#
Crie um objeto
assetIdentifier
e defina as propriedades obrigatórias. Todos os recursos, independentemente do tipo ou da maneira como são usados, precisam especificar umassetIdentifier
. Ao atribuir o recurso a um criativo, esse objeto será usado para buscar o recurso. As seguintes propriedades são obrigatórias:-
A propriedade
name
, que será o nome do recurso no servidor. O nome precisa incluir uma extensão que indica o tipo de arquivo, como .png ou .gif, e será exposto ao navegador como o nome do recurso, mas não precisará ser o mesmo que o nome do arquivo original. É importante saber que esse nome pode ser mudado pelo Campaign Manager 360 para torná-lo exclusivo no servidor. Confira o valor retornado para verificar se o nome foi alterado. -
A propriedade
type
, que identifica o tipo de recurso. Essa propriedade determinará com quais tipos de criativos esse recurso poderá ser associado.
// Create the creative asset ID and Metadata. CreativeAssetId assetId = new CreativeAssetId(); assetId.Name = Path.GetFileName(assetFile); assetId.Type = assetType;
-
A propriedade
Faça upload do arquivo chamando
creativeAssets.insert()
. Execute um upload de várias partes, passando oassetIdentifier
e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recursoCreativeAsset
será retornado, com umassetIdentifier
que você usará para atribuir esse recurso a um criativo.// 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
Crie um objeto
assetIdentifier
e defina as propriedades obrigatórias. Todos os recursos, independentemente do tipo ou da maneira como são usados, precisam especificar umassetIdentifier
. Ao atribuir o recurso a um criativo, esse objeto será usado para buscar o recurso. As seguintes propriedades são obrigatórias:-
A propriedade
name
, que será o nome do recurso no servidor. O nome precisa incluir uma extensão que indica o tipo de arquivo, como .png ou .gif, e será exposto ao navegador como o nome do recurso, mas não precisará ser o mesmo que o nome do arquivo original. É importante saber que esse nome pode ser mudado pelo Campaign Manager 360 para torná-lo exclusivo no servidor. Confira o valor retornado para verificar se o nome foi alterado. -
A propriedade
type
, que identifica o tipo de recurso. Essa propriedade determinará com quais tipos de criativos esse recurso poderá ser associado.
// Create the creative asset ID and Metadata. CreativeAssetId assetId = new CreativeAssetId(); assetId.setName(assetName); assetId.setType(assetType);
-
A propriedade
Faça upload do arquivo chamando
creativeAssets.insert()
. Execute um upload de várias partes, passando oassetIdentifier
e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recursoCreativeAsset
será retornado, com umassetIdentifier
que você usará para atribuir esse recurso a um criativo.// 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
Crie um objeto
assetIdentifier
e defina as propriedades obrigatórias. Todos os recursos, independentemente do tipo ou da maneira como são usados, precisam especificar umassetIdentifier
. Ao atribuir o recurso a um criativo, esse objeto será usado para buscar o recurso. As seguintes propriedades são obrigatórias:-
A propriedade
name
, que será o nome do recurso no servidor. O nome precisa incluir uma extensão que indica o tipo de arquivo, como .png ou .gif, e será exposto ao navegador como o nome do recurso, mas não precisará ser o mesmo que o nome do arquivo original. É importante saber que esse nome pode ser mudado pelo Campaign Manager 360 para torná-lo exclusivo no servidor. Confira o valor retornado para verificar se o nome foi alterado. -
A propriedade
type
, que identifica o tipo de recurso. Essa propriedade determinará com quais tipos de criativos esse recurso poderá ser associado.
$assetId = new Google_Service_Dfareporting_CreativeAssetId(); $assetId->setName($asset['name']); $assetId->setType($type);
-
A propriedade
Faça upload do arquivo chamando
creativeAssets.insert()
. Execute um upload de várias partes, passando oassetIdentifier
e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recursoCreativeAsset
será retornado, com umassetIdentifier
que você usará para atribuir esse recurso a um criativo.$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
Crie um objeto
assetIdentifier
e defina as propriedades obrigatórias. Todos os recursos, independentemente do tipo ou da maneira como são usados, precisam especificar umassetIdentifier
. Ao atribuir o recurso a um criativo, esse objeto será usado para buscar o recurso. As seguintes propriedades são obrigatórias:-
A propriedade
name
, que será o nome do recurso no servidor. O nome precisa incluir uma extensão que indica o tipo de arquivo, como .png ou .gif, e será exposto ao navegador como o nome do recurso, mas não precisará ser o mesmo que o nome do arquivo original. É importante saber que esse nome pode ser mudado pelo Campaign Manager 360 para torná-lo exclusivo no servidor. Confira o valor retornado para verificar se o nome foi alterado. -
A propriedade
type
, que identifica o tipo de recurso. Essa propriedade determinará com quais tipos de criativos esse recurso poderá ser associado.
# Construct the creative asset metadata creative_asset = {'assetIdentifier': {'name': asset_name, 'type': asset_type}}
-
A propriedade
Faça upload do arquivo chamando
creativeAssets.insert()
. Execute um upload de várias partes, passando oassetIdentifier
e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recursoCreativeAsset
será retornado, com umassetIdentifier
que você usará para atribuir esse recurso a um criativo.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()
Ruby
Crie um objeto
assetIdentifier
e defina as propriedades obrigatórias. Todos os recursos, independentemente do tipo ou da maneira como são usados, precisam especificar umassetIdentifier
. Ao atribuir o recurso a um criativo, esse objeto será usado para buscar o recurso. As seguintes propriedades são obrigatórias:-
A propriedade
name
, que será o nome do recurso no servidor. O nome precisa incluir uma extensão que indica o tipo de arquivo, como .png ou .gif, e será exposto ao navegador como o nome do recurso, mas não precisará ser o mesmo que o nome do arquivo original. É importante saber que esse nome pode ser mudado pelo Campaign Manager 360 para torná-lo exclusivo no servidor. Confira o valor retornado para verificar se o nome foi alterado. -
A propriedade
type
, que identifica o tipo de recurso. Essa propriedade determinará com quais tipos de criativos esse recurso poderá ser associado.
# 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 ) )
-
A propriedade
Faça upload do arquivo chamando
creativeAssets.insert()
. Execute um upload de várias partes, passando oassetIdentifier
e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recursoCreativeAsset
será retornado, com umassetIdentifier
que você usará para atribuir esse recurso a um criativo.# 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 )
Gerar um criativo
Um objeto Creative
envolve um recurso existente. Dependendo de como você usará os criativos na página de host, será possível criar objetos Creative
de diferentes tipos de criativos. Consulte a documentação de referência para determinar o tipo adequado para você.
O exemplo a seguir demonstra como criar um novo criativo de exibição HTML5.
C#
-
Faça upload dos materiais. Criativos diferentes exigem tipos e quantidades diferentes de recursos. Consulte Fazer upload de recursos para saber mais detalhes. Cada vez que fizer upload de um recurso, você receberá um
assetIdenfitier
como resposta. Em vez de usar o código como de costume, você usará o tipo e o nome do arquivo armazenado para buscar esses recursos no seu criativo. -
Gere um criativo e atribua valores adequados. Instancie um
Creative
e defina otype
adequado. Não é possível alterar o tipo de um objetoCreative
depois de salvá-lo. Especifique os recursos por meio deAssetIdentifier
erole
.// 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 };
-
Salve o criativo. Para fazer isso, chame
creatives.insert()
. É obrigatório especificar um código de anunciante para associar a esse criativo.Creative result = service.Creatives.Insert(creative, profileId).Execute();
-
(Opcional) Associe o criativo a uma campanha. Para fazer isso, chame
campaignCreativeAssociations.insert()
, enviando os IDs da campanha e do criativo.// 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
-
Faça upload dos materiais. Criativos diferentes exigem tipos e quantidades diferentes de recursos. Consulte Fazer upload de recursos para saber mais detalhes. Cada vez que fizer upload de um recurso, você receberá um
assetIdenfitier
como resposta. Em vez de usar o código como de costume, você usará o tipo e o nome do arquivo armazenado para buscar esses recursos no seu criativo. -
Gere um criativo e atribua valores adequados. Instancie um
Creative
e defina otype
adequado. Não é possível alterar o tipo de um objetoCreative
depois de salvá-lo. Especifique os recursos por meio deAssetIdentifier
erole
.// 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));
-
Salve o criativo. Para fazer isso, chame
creatives.insert()
. É obrigatório especificar um código de anunciante para associar a esse criativo.Creative result = reporting.creatives().insert(profileId, creative).execute();
-
(Opcional) Associe o criativo a uma campanha. Para fazer isso, chame
campaignCreativeAssociations.insert()
, enviando os IDs da campanha e do criativo.// 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
-
Faça upload dos materiais. Criativos diferentes exigem tipos e quantidades diferentes de recursos. Consulte Fazer upload de recursos para saber mais detalhes. Cada vez que fizer upload de um recurso, você receberá um
assetIdenfitier
como resposta. Em vez de usar o código como de costume, você usará o tipo e o nome do arquivo armazenado para buscar esses recursos no seu criativo. -
Gere um criativo e atribua valores adequados. Instancie um
Creative
e defina otype
adequado. Não é possível alterar o tipo de um objetoCreative
depois de salvá-lo. Especifique os recursos por meio deAssetIdentifier
erole
.$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]);
-
Salve o criativo. Para fazer isso, chame
creatives.insert()
. É obrigatório especificar um código de anunciante para associar a esse criativo.$result = $this->service->creatives->insert( $values['user_profile_id'], $creative );
-
(Opcional) Associe o criativo a uma campanha. Para fazer isso, chame
campaignCreativeAssociations.insert()
, enviando os IDs da campanha e do criativo.$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
-
Faça upload dos materiais. Criativos diferentes exigem tipos e quantidades diferentes de recursos. Consulte Fazer upload de recursos para saber mais detalhes. Cada vez que fizer upload de um recurso, você receberá um
assetIdenfitier
como resposta. Em vez de usar o código como de costume, você usará o tipo e o nome do arquivo armazenado para buscar esses recursos no seu criativo. -
Gere um criativo e atribua valores adequados. Instancie um
Creative
e defina otype
adequado. Não é possível alterar o tipo de um objetoCreative
depois de salvá-lo. Especifique os recursos por meio deAssetIdentifier
erole
.# 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' }
-
Salve o criativo. Para fazer isso, chame
creatives.insert()
. É obrigatório especificar um código de anunciante para associar a esse criativo.request = service.creatives().insert(profileId=profile_id, body=creative) # Execute request and print response. response = request.execute()
-
(Opcional) Associe o criativo a uma campanha. Para fazer isso, chame
campaignCreativeAssociations.insert()
, enviando os IDs da campanha e do criativo.# 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()
Ruby
-
Faça upload dos materiais. Criativos diferentes exigem tipos e quantidades diferentes de recursos. Consulte Fazer upload de recursos para saber mais detalhes. Cada vez que fizer upload de um recurso, você receberá um
assetIdenfitier
como resposta. Em vez de usar o código como de costume, você usará o tipo e o nome do arquivo armazenado para buscar esses recursos no seu criativo. -
Gere um criativo e atribua valores adequados. Instancie um
Creative
e defina otype
adequado. Não é possível alterar o tipo de um objetoCreative
depois de salvá-lo. Especifique os recursos por meio deAssetIdentifier
erole
.# 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' )
-
Salve o criativo. Para fazer isso, chame
creatives.insert()
. É obrigatório especificar um código de anunciante para associar a esse criativo.# Insert the creative. result = service.insert_creative(profile_id, creative)
-
(Opcional) Associe o criativo a uma campanha. Para fazer isso, chame
campaignCreativeAssociations.insert()
, enviando os IDs da campanha e do criativo.# 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)
Criar um anúncio
Um Ad
é o vínculo entre um Creative
e um Placement
. Um Ad
pode ser vinculado a um ou mais canais e ter um ou mais criativos.
É possível criar um Ad
explícita ou implicitamente.
Explicitamente
C#
-
Crie um objeto
CreativeAssignment
para cada criativo associado a esse anúncio. Defina o campoCreativeAssignment.active
como verdadeiro.// 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;
-
Crie um objeto
CreativeRotation
para armazenar osCreativeAssignment
s. Se você estiver criando um grupo de rotação, não se esqueça de definir os outros campos obrigatórios de rotação de criativos.// Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.CreativeAssignments = new List<CreativeAssignment>() { creativeAssignment };
-
Crie um objeto
PlacementAssignment
para cada canal a ser associado a esse anúncio. Defina o campoPlacementAssignment.active
como verdadeiro.// Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.Active = true; placementAssignment.PlacementId = placementId;
-
Crie um objeto
Ad
. Defina o creativeRotation no campocreativeRotation
do objetoAd
e os placementAssignments na matrizplacementAssignments
do objetoAd
.// 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";
-
Salve o anúncio chamando
ads.insert()
.// Insert the rotation group. Ad result = service.Ads.Insert(rotationGroup, profileId).Execute();
Java
-
Crie um objeto
CreativeAssignment
para cada criativo associado a esse anúncio. Defina o campoCreativeAssignment.active
como verdadeiro.// 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);
-
Crie um objeto
CreativeRotation
para armazenar osCreativeAssignment
s. Se você estiver criando um grupo de rotação, não se esqueça de definir os outros campos obrigatórios de rotação de criativos.// Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.setCreativeAssignments(ImmutableList.of(creativeAssignment));
-
Crie um objeto
PlacementAssignment
para cada canal a ser associado a esse anúncio. Defina o campoPlacementAssignment.active
como verdadeiro.// Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.setActive(true); placementAssignment.setPlacementId(placementId);
-
Crie um objeto
Ad
. Defina o creativeRotation no campocreativeRotation
do objetoAd
e os placementAssignments na matrizplacementAssignments
do objetoAd
.// Create a delivery schedule. DeliverySchedule deliverySchedule = new DeliverySchedule(); deliverySchedule.setImpressionRatio(1L); deliverySchedule.setPriority("AD_PRIORITY_01"); DateTime startDate = new DateTime(new Date()); DateTime endDate = campaign.getEndDate(); // 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");
-
Salve o anúncio chamando
ads.insert()
.// Insert the rotation group. Ad result = reporting.ads().insert(profileId, rotationGroup).execute();
PHP
-
Crie um objeto
CreativeAssignment
para cada criativo associado a esse anúncio. Defina o campoCreativeAssignment.active
como verdadeiro.// 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);
-
Crie um objeto
CreativeRotation
para armazenar osCreativeAssignment
s. Se você estiver criando um grupo de rotação, não se esqueça de definir os outros campos obrigatórios de rotação de criativos.// Create a creative rotation. $creativeRotation = new Google_Service_Dfareporting_CreativeRotation(); $creativeRotation->setCreativeAssignments([$creativeAssignment]);
-
Crie um objeto
PlacementAssignment
para cada canal a ser associado a esse anúncio. Defina o campoPlacementAssignment.active
como verdadeiro.// Create a placement assignment. $placementAssignment = new Google_Service_Dfareporting_PlacementAssignment(); $placementAssignment->setActive(true); $placementAssignment->setPlacementId($values['placement_id']);
-
Crie um objeto
Ad
. Defina o creativeRotation no campocreativeRotation
do objetoAd
e os placementAssignments na matrizplacementAssignments
do objetoAd
.// 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');
-
Salve o anúncio chamando
ads.insert()
.$result = $this->service->ads->insert($values['user_profile_id'], $ad);
Python
-
Crie um objeto
CreativeAssignment
para cada criativo associado a esse anúncio. Defina o campoCreativeAssignment.active
como verdadeiro.# Construct creative assignment. creative_assignment = { 'active': 'true', 'creativeId': creative_id, 'clickThroughUrl': { 'defaultLandingPage': 'true' } }
-
Crie um objeto
CreativeRotation
para armazenar osCreativeAssignment
s. Se você estiver criando um grupo de rotação, não se esqueça de definir os outros campos obrigatórios de rotação de criativos.# Construct creative rotation. creative_rotation = { 'creativeAssignments': [creative_assignment], 'type': 'CREATIVE_ROTATION_TYPE_RANDOM', 'weightCalculationStrategy': 'WEIGHT_STRATEGY_OPTIMIZED' }
-
Crie um objeto
PlacementAssignment
para cada canal a ser associado a esse anúncio. Defina o campoPlacementAssignment.active
como verdadeiro.# Construct placement assignment. placement_assignment = { 'active': 'true', 'placementId': placement_id, }
-
Crie um objeto
Ad
. Defina o creativeRotation no campocreativeRotation
do objetoAd
e os placementAssignments na matrizplacementAssignments
do objetoAd
.# 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' }
-
Salve o anúncio chamando
ads.insert()
.request = service.ads().insert(profileId=profile_id, body=ad) # Execute request and print response. response = request.execute()
Ruby
-
Crie um objeto
CreativeAssignment
para cada criativo associado a esse anúncio. Defina o campoCreativeAssignment.active
como verdadeiro.# 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 ) )
-
Crie um objeto
CreativeRotation
para armazenar osCreativeAssignment
s. Se você estiver criando um grupo de rotação, não se esqueça de definir os outros campos obrigatórios de rotação de criativos.# 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' )
-
Crie um objeto
PlacementAssignment
para cada canal a ser associado a esse anúncio. Defina o campoPlacementAssignment.active
como verdadeiro.# Construct placement assignment. placement_assignment = DfareportingUtils::API_NAMESPACE::PlacementAssignment.new( active: true, placement_id: placement_id )
-
Crie um objeto
Ad
. Defina o creativeRotation no campocreativeRotation
do objetoAd
e os placementAssignments na matrizplacementAssignments
do objetoAd
.# 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' )
-
Salve o anúncio chamando
ads.insert()
.result = service.insert_ad(profile_id, ad)
Implicitamente
C#
-
Crie e salve um
Placement
. -
Crie e salve um
Creative
. -
Associe o
Creative
ao mesmoCampaign
usado paraPlacement
chamandocampaignCreativeAssociations.insert()
. Consulte a Etapa 4 na seção Gerar um criativo. Isso criará um anúncio default associado ao criativo e ao canal.// 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
-
Crie e salve um
Placement
. -
Crie e salve um
Creative
. -
Associe o
Creative
ao mesmoCampaign
usado paraPlacement
chamandocampaignCreativeAssociations.insert()
. Consulte a Etapa 4 na seção Gerar um criativo. Isso criará um anúncio default associado ao criativo e ao canal.// 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
-
Crie e salve um
Placement
. -
Crie e salve um
Creative
. -
Associe o
Creative
ao mesmoCampaign
usado paraPlacement
chamandocampaignCreativeAssociations.insert()
. Consulte a Etapa 4 na seção Gerar um criativo. Isso criará um anúncio default associado ao criativo e ao canal.$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
-
Crie e salve um
Placement
. -
Crie e salve um
Creative
. -
Associe o
Creative
ao mesmoCampaign
usado paraPlacement
chamandocampaignCreativeAssociations.insert()
. Consulte a Etapa 4 na seção Gerar um criativo. Isso criará um anúncio default associado ao criativo e ao canal.# 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()
Ruby
-
Crie e salve um
Placement
. -
Crie e salve um
Creative
. -
Associe o
Creative
ao mesmoCampaign
usado paraPlacement
chamandocampaignCreativeAssociations.insert()
. Consulte a Etapa 4 na seção Gerar um criativo. Isso criará um anúncio default associado ao criativo e ao canal.# 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)
Criar um anúncio implicitamente salvará a etapa adicional de criação de um Ad
. Isso só poderá ser feito se nenhum anúncio default do tamanho especificado existir na sua campanha.
Pesquisar objetos
Pesquise objetos chamando a operação list()
exposta pelo serviço que define o objeto a ser encontrado. Para isso, especifique os critérios opcionais adequados ao tipo de objeto. Por exemplo, para pesquisar objetos Ad, chame ads.list()
. Os critérios opcionais expõem um conjunto de propriedades adequadas ao objeto. Preencha todas as propriedades em que quer pesquisar. A pesquisa retornará somente objetos que atendem a todos os seus critérios. Não é possível fazer uma pesquisa que corresponda a um critério específico. As strings são compatíveis com o caractere curinga "*", não diferenciam maiúsculas de minúsculas e têm correspondência em strings maiores.
Para melhorar o desempenho, é possível solicitar respostas parciais usando o parâmetro fields
. Isso instruirá o servidor a retornar somente os campos que você especificar, e não a representação completa do recurso. Veja mais informações sobre este tópico no guia Dicas de desempenho.
Paginação
Às vezes, é melhor não recuperar todos os resultados de uma solicitação list()
. Por exemplo, talvez você tenha interesse somente nos 10 anúncios mais novos de um pool de milhares. Para facilitar essa etapa, muitos métodos list()
permitem solicitar menos resultados com um processo conhecido como paginação.
Os métodos compatíveis com paginação retornam subconjuntos de resultados em grupos chamados de páginas. Por padrão, o número máximo de resultados por página é mil. Para alterar o número de resultados por página, defina maxResults
e faça a iteração por meio de páginas com o nextPageToken
retornado na resposta:
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
Ruby
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
Gerar tags do Floodlight
As tags do Floodlight são tags HTML incorporadas em uma página e usadas para rastrear as ações do usuário em um site, por exemplo, compras realizadas. Para gerar tags do Floodlight, você precisa de uma FloodlightActivity
que pertence a um FloodlightActivityGroup
:
C#
-
Crie um novo grupo de atividades do Floodlight e transmita os valores de
name
,type
efloodlightConfigurationId
.// Create the floodlight activity group. FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup(); floodlightActivityGroup.Name = groupName; floodlightActivityGroup.FloodlightConfigurationId = floodlightConfigurationId; floodlightActivityGroup.Type = "COUNTER";
-
Para salvar o grupo de atividades do Floodlight, chame
floodlightActivityGroups.insert()
, que retornará o código do novo grupo.// Insert the activity group. FloodlightActivityGroup result = service.FloodlightActivityGroups.Insert(floodlightActivityGroup, profileId).Execute();
-
Crie uma nova atividade do Floodlight e a atribua ao código do grupo de atividades do Floodlight recém-criado, assim como a todos os outros campos obrigatórios.
// 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;
-
Salve a nova atividade chamando
floodlightActivities.insert()
, que retornará o código dela.// Create the floodlight tag activity. FloodlightActivity result = service.FloodlightActivities.Insert(activity, profileId).Execute();
-
Gere as tags chamando
floodlightActivities.generatetag()
com ofloodlightActivityId
da nova atividade. Envie as tags ao webmaster do site do anunciante.// Generate the floodlight activity tag. FloodlightActivitiesResource.GeneratetagRequest request = service.FloodlightActivities.Generatetag(profileId); request.FloodlightActivityId = activityId; FloodlightActivitiesGenerateTagResponse response = request.Execute();
Java
-
Crie um novo grupo de atividades do Floodlight e transmita os valores de
name
,type
efloodlightConfigurationId
.// Create the floodlight activity group. FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup(); floodlightActivityGroup.setName(groupName); floodlightActivityGroup.setFloodlightConfigurationId(floodlightConfigurationId); floodlightActivityGroup.setType("COUNTER");
-
Para salvar o grupo de atividades do Floodlight, chame
floodlightActivityGroups.insert()
, que retornará o código do novo grupo.// Insert the activity group. FloodlightActivityGroup result = reporting.floodlightActivityGroups().insert(profileId, floodlightActivityGroup).execute();
-
Crie uma nova atividade do Floodlight e a atribua ao código do grupo de atividades do Floodlight recém-criado, assim como a todos os outros campos obrigatórios.
// 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");
-
Salve a nova atividade chamando
floodlightActivities.insert()
, que retornará o código dela.// Create the floodlight tag activity. FloodlightActivity result = reporting.floodlightActivities().insert(profileId, activity).execute();
-
Gere as tags chamando
floodlightActivities.generatetag()
com ofloodlightActivityId
da nova atividade. Envie as tags ao webmaster do site do anunciante.// Generate the floodlight activity tag. Generatetag request = reporting.floodlightActivities().generatetag(profileId); request.setFloodlightActivityId(activityId); FloodlightActivitiesGenerateTagResponse response = request.execute();
PHP
-
Crie um novo grupo de atividades do Floodlight e transmita os valores de
name
,type
efloodlightConfigurationId
.$group = new Google_Service_Dfareporting_FloodlightActivityGroup(); $group->setFloodlightConfigurationId($values['configuration_id']); $group->setName($values['group_name']); $group->setType('COUNTER');
-
Para salvar o grupo de atividades do Floodlight, chame
floodlightActivityGroups.insert()
, que retornará o código do novo grupo.$result = $this->service->floodlightActivityGroups->insert( $values['user_profile_id'], $group );
-
Crie uma nova atividade do Floodlight e a atribua ao código do grupo de atividades do Floodlight recém-criado, assim como a todos os outros campos obrigatórios.
$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']);
-
Salve a nova atividade chamando
floodlightActivities.insert()
, que retornará o código dela.$result = $this->service->floodlightActivities->insert( $values['user_profile_id'], $activity );
-
Gere as tags chamando
floodlightActivities.generatetag()
com ofloodlightActivityId
da nova atividade. Envie as tags ao webmaster do site do anunciante.$result = $this->service->floodlightActivities->generatetag( $values['user_profile_id'], ['floodlightActivityId' => $values['activity_id']] );
Python
-
Crie um novo grupo de atividades do Floodlight e transmita os valores de
name
,type
efloodlightConfigurationId
.# Construct and save floodlight activity group. activity_group = { 'name': 'Test Floodlight Activity Group', 'floodlightConfigurationId': floodlight_config_id, 'type': 'COUNTER' }
-
Para salvar o grupo de atividades do Floodlight, chame
floodlightActivityGroups.insert()
, que retornará o código do novo grupo.request = service.floodlightActivityGroups().insert( profileId=profile_id, body=activity_group)
-
Crie uma nova atividade do Floodlight e a atribua ao código do grupo de atividades do Floodlight recém-criado, assim como a todos os outros campos obrigatórios.
# 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' }
-
Salve a nova atividade chamando
floodlightActivities.insert()
, que retornará o código dela.request = service.floodlightActivities().insert( profileId=profile_id, body=floodlight_activity)
-
Gere as tags chamando
floodlightActivities.generatetag()
com ofloodlightActivityId
da nova atividade. Envie as tags ao webmaster do site do anunciante.# Construct the request. request = service.floodlightActivities().generatetag( profileId=profile_id, floodlightActivityId=activity_id) # Execute request and print response. response = request.execute()
Ruby
-
Crie um novo grupo de atividades do Floodlight e transmita os valores de
name
,type
efloodlightConfigurationId
.# 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' )
-
Para salvar o grupo de atividades do Floodlight, chame
floodlightActivityGroups.insert()
, que retornará o código do novo grupo.# Insert the floodlight activity group. result = service.insert_floodlight_activity_group(profile_id, activity_group)
-
Crie uma nova atividade do Floodlight e a atribua ao código do grupo de atividades do Floodlight recém-criado, assim como a todos os outros campos obrigatórios.
# 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)) )
-
Salve a nova atividade chamando
floodlightActivities.insert()
, que retornará o código dela.# Insert the floodlight activity. result = service.insert_floodlight_activity(profile_id, activity)
-
Gere as tags chamando
floodlightActivities.generatetag()
com ofloodlightActivityId
da nova atividade. Envie as tags ao webmaster do site do anunciante.# Construct the request. result = service.generatetag_floodlight_activity(profile_id, floodlight_activity_id: activity_id)
Gerar tags de veiculações
A última etapa é gerar as tags HTML que serão enviadas ao editor para exibir seus anúncios. Para gerar as tags por meio da API, faça uma solicitação para placements.generatetags()
, especificando um conjunto de placementIds
e 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()
Ruby
# Construct the request. result = service.generate_placement_tags(profile_id, campaign_id: campaign_id, placement_ids: [placement_id])