Tarefas de tráfego comuns

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:
    1. 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.
    2. 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 código 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#

  1. 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";
    
  2. Chame advertisers.insert() para salvar o anunciante.
    // Create the advertiser.
    Advertiser result = service.Advertisers.Insert(advertiser, profileId).Execute();
    

Java

  1. 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");
    
  2. Chame advertisers.insert() para salvar o anunciante.
    // Create the advertiser.
    Advertiser result = reporting.advertisers().insert(profileId, advertiser).execute();
    

PHP

  1. 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');
    
  2. Chame advertisers.insert() para salvar o anunciante.
    $result = $this->service->advertisers->insert(
        $values['user_profile_id'],
        $advertiser
    );
    

Python

  1. Crie um objeto Advertiser e defina as propriedades obrigatórias de nome e status.
    # Construct and save advertiser.
    advertiser = {
        'name': 'Test Advertiser',
        'status': 'APPROVED'
    }
    
  2. 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

  1. 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'
    )
    
  2. Chame advertisers.insert() para salvar o anunciante.
    # Insert the advertiser.
    result = service.insert_advertiser(profile_id, advertiser)
    

Criar uma campanha

C#

  1. 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, chame advertiserLandingPages.list. Para criar uma nova, chame advertiserLandingPages.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));
    
  2. Chame campaigns.insert() para salvar a campanha.

    // Insert the campaign.
    Campaign result = service.Campaigns.Insert(campaign, profileId).Execute();
    

Java

  1. 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, chame advertiserLandingPages.list. Para criar uma nova, chame advertiserLandingPages.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);
    
  2. Chame campaigns.insert() para salvar a campanha.

    // Insert the campaign.
    Campaign result = reporting.campaigns().insert(profileId, campaign).execute();
    

PHP

  1. 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, chame advertiserLandingPages.list. Para criar uma nova, chame advertiserLandingPages.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'));
    
  2. Chame campaigns.insert() para salvar a campanha.

    $result = $this->service->campaigns->insert(
        $values['user_profile_id'],
        $campaign
    );
    

Python

  1. 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, chame advertiserLandingPages.list. Para criar uma nova, chame advertiserLandingPages.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'
    }
    
  2. 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

  1. 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, chame advertiserLandingPages.list. Para criar uma nova, chame advertiserLandingPages.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'
    )
    
  2. Chame campaigns.insert() para salvar a campanha.

    # Insert the campaign.
    result = service.insert_campaign(profile_id, campaign)
    

Criar um canal

C#

  1. Crie um objeto Placement e defina as propriedades de canal necessárias (incluindo campaignId e siteId). 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;
    
  2. 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;
    
  3. Salve o objeto Placement chamando placements.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

  1. Crie um objeto Placement e defina as propriedades de canal necessárias (incluindo campaignId e siteId). 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);
    
  2. 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);
    
  3. Salve o objeto Placement chamando placements.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

  1. Crie um objeto Placement e defina as propriedades de canal necessárias (incluindo campaignId e siteId). 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);
    
  2. 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);
    
  3. Salve o objeto Placement chamando placements.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

  1. Crie um objeto Placement e defina as propriedades de canal necessárias (incluindo campaignId e siteId). 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']
    }
    
  2. 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'
    }
    
  3. Salve o objeto Placement chamando placements.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

  1. Crie um objeto Placement e defina as propriedades de canal necessárias (incluindo campaignId e siteId). 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']
    )
    
  2. 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
      )
    
  3. Salve o objeto Placement chamando placements.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 upload de recursos

É 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#

  1. 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 um assetIdentifier. 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;
    
  2. Faça upload do arquivo chamando creativeAssets.insert(). Execute um upload de várias partes, passando o assetIdentifier e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recurso CreativeAsset será retornado, com um assetIdentifier 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

  1. 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 um assetIdentifier. 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);
    
  2. Faça upload do arquivo chamando creativeAssets.insert(). Execute um upload de várias partes, passando o assetIdentifier e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recurso CreativeAsset será retornado, com um assetIdentifier 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

  1. 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 um assetIdentifier. 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);
    
  2. Faça upload do arquivo chamando creativeAssets.insert(). Execute um upload de várias partes, passando o assetIdentifier e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recurso CreativeAsset será retornado, com um assetIdentifier 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

  1. 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 um assetIdentifier. 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}}
    
  2. Faça upload do arquivo chamando creativeAssets.insert(). Execute um upload de várias partes, passando o assetIdentifier e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recurso CreativeAsset será retornado, com um assetIdentifier 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

  1. 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 um assetIdentifier. 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
      )
    )
    
  2. Faça upload do arquivo chamando creativeAssets.insert(). Execute um upload de várias partes, passando o assetIdentifier e o conteúdo do arquivo como parte da mesma solicitação. Se for bem-sucedido, um recurso CreativeAsset será retornado, com um assetIdentifier 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#

  1. Faça upload dos recursos. 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.
  2. Gere um criativo e atribua valores adequados. Instancie um Creative e defina o type adequado. Não é possível alterar o tipo de um objeto Creative depois de salvá-lo. Especifique os recursos por meio de AssetIdentifier e 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 };
    
  3. 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();
    
  4. (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

  1. Faça upload dos recursos. 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.
  2. Gere um criativo e atribua valores adequados. Instancie um Creative e defina o type adequado. Não é possível alterar o tipo de um objeto Creative depois de salvá-lo. Especifique os recursos por meio de AssetIdentifier e 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));
    
  3. 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();
    
  4. (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

  1. Faça upload dos recursos. 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.
  2. Gere um criativo e atribua valores adequados. Instancie um Creative e defina o type adequado. Não é possível alterar o tipo de um objeto Creative depois de salvá-lo. Especifique os recursos por meio de AssetIdentifier e 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]);
    
  3. 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
    );
    
  4. (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

  1. Faça upload dos recursos. 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.
  2. Gere um criativo e atribua valores adequados. Instancie um Creative e defina o type adequado. Não é possível alterar o tipo de um objeto Creative depois de salvá-lo. Especifique os recursos por meio de AssetIdentifier e 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'
    }
    
  3. 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()
    
  4. (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

  1. Faça upload dos recursos. 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.
  2. Gere um criativo e atribua valores adequados. Instancie um Creative e defina o type adequado. Não é possível alterar o tipo de um objeto Creative depois de salvá-lo. Especifique os recursos por meio de AssetIdentifier e 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'
    )
    
  3. 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)
    
  4. (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#

  1. Crie um objeto CreativeAssignment para cada criativo associado a esse anúncio. Defina o campo CreativeAssignment.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;
    
  2. Crie um objeto CreativeRotation para armazenar os CreativeAssignments. 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
    };
    
  3. Crie um objeto PlacementAssignment para cada canal a ser associado a esse anúncio. Defina o campo PlacementAssignment.active como verdadeiro.
    // Create a placement assignment.
    PlacementAssignment placementAssignment = new PlacementAssignment();
    placementAssignment.Active = true;
    placementAssignment.PlacementId = placementId;
    
  4. Crie um objeto Ad. Defina o creativeRotation no campo creativeRotation do objeto Ad e os placementAssignments na matriz placementAssignments do objeto 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";
    
  5. Salve o anúncio chamando ads.insert().
    // Insert the rotation group.
    Ad result = service.Ads.Insert(rotationGroup, profileId).Execute();
    

Java

  1. Crie um objeto CreativeAssignment para cada criativo associado a esse anúncio. Defina o campo CreativeAssignment.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);
    
  2. Crie um objeto CreativeRotation para armazenar os CreativeAssignments. 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));
    
  3. Crie um objeto PlacementAssignment para cada canal a ser associado a esse anúncio. Defina o campo PlacementAssignment.active como verdadeiro.
    // Create a placement assignment.
    PlacementAssignment placementAssignment = new PlacementAssignment();
    placementAssignment.setActive(true);
    placementAssignment.setPlacementId(placementId);
    
  4. Crie um objeto Ad. Defina o creativeRotation no campo creativeRotation do objeto Ad e os placementAssignments na matriz placementAssignments do objeto 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 = 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");
    
  5. Salve o anúncio chamando ads.insert().
    // Insert the rotation group.
    Ad result = reporting.ads().insert(profileId, rotationGroup).execute();
    

PHP

  1. Crie um objeto CreativeAssignment para cada criativo associado a esse anúncio. Defina o campo CreativeAssignment.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);
    
  2. Crie um objeto CreativeRotation para armazenar os CreativeAssignments. 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]);
    
  3. Crie um objeto PlacementAssignment para cada canal a ser associado a esse anúncio. Defina o campo PlacementAssignment.active como verdadeiro.
    // Create a placement assignment.
    $placementAssignment =
        new Google_Service_Dfareporting_PlacementAssignment();
    $placementAssignment->setActive(true);
    $placementAssignment->setPlacementId($values['placement_id']);
    
  4. Crie um objeto Ad. Defina o creativeRotation no campo creativeRotation do objeto Ad e os placementAssignments na matriz placementAssignments do objeto 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');
    
  5. Salve o anúncio chamando ads.insert().
    $result = $this->service->ads->insert($values['user_profile_id'], $ad);
    

Python

  1. Crie um objeto CreativeAssignment para cada criativo associado a esse anúncio. Defina o campo CreativeAssignment.active como verdadeiro.
    # Construct creative assignment.
    creative_assignment = {
        'active': 'true',
        'creativeId': creative_id,
        'clickThroughUrl': {
            'defaultLandingPage': 'true'
        }
    }
    
  2. Crie um objeto CreativeRotation para armazenar os CreativeAssignments. 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'
    }
    
  3. Crie um objeto PlacementAssignment para cada canal a ser associado a esse anúncio. Defina o campo PlacementAssignment.active como verdadeiro.
    # Construct placement assignment.
    placement_assignment = {
        'active': 'true',
        'placementId': placement_id,
    }
    
  4. Crie um objeto Ad. Defina o creativeRotation no campo creativeRotation do objeto Ad e os placementAssignments na matriz placementAssignments do objeto 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'
    }
    
  5. 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

  1. Crie um objeto CreativeAssignment para cada criativo associado a esse anúncio. Defina o campo CreativeAssignment.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
        )
      )
    
  2. Crie um objeto CreativeRotation para armazenar os CreativeAssignments. 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'
    )
    
  3. Crie um objeto PlacementAssignment para cada canal a ser associado a esse anúncio. Defina o campo PlacementAssignment.active como verdadeiro.
    # Construct placement assignment.
    placement_assignment =
      DfareportingUtils::API_NAMESPACE::PlacementAssignment.new(
        active: true,
        placement_id: placement_id
      )
    
  4. Crie um objeto Ad. Defina o creativeRotation no campo creativeRotation do objeto Ad e os placementAssignments na matriz placementAssignments do objeto 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'
    )
    
  5. Salve o anúncio chamando ads.insert().
    result = service.insert_ad(profile_id, ad)
    

Implicitamente

C#

  1. Crie e salve um Placement.
  2. Crie e salve um Creative.
  3. Associe o Creative ao mesmo Campaign usado para Placement chamando campaignCreativeAssociations.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

  1. Crie e salve um Placement.
  2. Crie e salve um Creative.
  3. Associe o Creative ao mesmo Campaign usado para Placement chamando campaignCreativeAssociations.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

  1. Crie e salve um Placement.
  2. Crie e salve um Creative.
  3. Associe o Creative ao mesmo Campaign usado para Placement chamando campaignCreativeAssociations.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

  1. Crie e salve um Placement.
  2. Crie e salve um Creative.
  3. Associe o Creative ao mesmo Campaign usado para Placement chamando campaignCreativeAssociations.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

  1. Crie e salve um Placement.
  2. Crie e salve um Creative.
  3. Associe o Creative ao mesmo Campaign usado para Placement chamando campaignCreativeAssociations.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#

  1. Crie um novo grupo de atividades do Floodlight e transmita os valores de name, type e floodlightConfigurationId.
    // Create the floodlight activity group.
    FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup();
    floodlightActivityGroup.Name = groupName;
    floodlightActivityGroup.FloodlightConfigurationId = floodlightConfigurationId;
    floodlightActivityGroup.Type = "COUNTER";
    
  2. 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();
    
  3. 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;
    
  4. 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();
    
  5. Gere as tags chamando floodlightActivities.generatetag() com o floodlightActivityId 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

  1. Crie um novo grupo de atividades do Floodlight e transmita os valores de name, type e floodlightConfigurationId.
    // Create the floodlight activity group.
    FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup();
    floodlightActivityGroup.setName(groupName);
    floodlightActivityGroup.setFloodlightConfigurationId(floodlightConfigurationId);
    floodlightActivityGroup.setType("COUNTER");
    
  2. 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();
    
  3. 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");
    
  4. 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();
    
  5. Gere as tags chamando floodlightActivities.generatetag() com o floodlightActivityId 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

  1. Crie um novo grupo de atividades do Floodlight e transmita os valores de name, type e floodlightConfigurationId.
    $group = new Google_Service_Dfareporting_FloodlightActivityGroup();
    $group->setFloodlightConfigurationId($values['configuration_id']);
    $group->setName($values['group_name']);
    $group->setType('COUNTER');
    
  2. 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
    );
    
  3. 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']);
    
  4. Salve a nova atividade chamando floodlightActivities.insert(), que retornará o código dela.
    $result = $this->service->floodlightActivities->insert(
        $values['user_profile_id'],
        $activity
    );
    
  5. Gere as tags chamando floodlightActivities.generatetag() com o floodlightActivityId 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

  1. Crie um novo grupo de atividades do Floodlight e transmita os valores de name, type e floodlightConfigurationId.
    # Construct and save floodlight activity group.
    activity_group = {
        'name': 'Test Floodlight Activity Group',
        'floodlightConfigurationId': floodlight_config_id,
        'type': 'COUNTER'
    }
    
  2. 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)
    
  3. 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'
    }
    
  4. Salve a nova atividade chamando floodlightActivities.insert(), que retornará o código dela.
    request = service.floodlightActivities().insert(
        profileId=profile_id, body=floodlight_activity)
    
  5. Gere as tags chamando floodlightActivities.generatetag() com o floodlightActivityId 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

  1. Crie um novo grupo de atividades do Floodlight e transmita os valores de name, type e 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'
      )
    
  2. 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)
    
  3. 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))
    )
    
  4. 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)
    
  5. Gere as tags chamando floodlightActivities.generatetag() com o floodlightActivityId 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])