Общие задачи управления трафиком, Общие задачи управления трафиком

На этой странице описано, как выполнить некоторые наиболее распространенные задачи по управлению трафиком с помощью API отчетов и управления трафиком DCM/DFA.

Общие советы по кодированию

  • Обязательные и необязательные свойства и параметры . Чтобы узнать, требуется ли свойство или параметр для вызова API, см. справочную документацию .
  • Поиск имен по подстановочным знакам . При поиске по именам объектов можно использовать подстановочный знак звездочки (*). Звездочка соответствует нулю или более любому символу. API также поддерживает неявный поиск подстроки, поэтому поиск «abc» будет неявно искать «*abc*».
  • Обновление или исправление . Чтобы изменить существующий объект, у вас есть два варианта:
    1. Обновление . При обновлении объекта все поля будут перезаписаны при вставке. Важно загрузить объект, который вы хотите обновить, и внести в этот объект любые изменения. В противном случае все поля, отсутствующие в запросе на обновление, будут удалены.
    2. Исправление — при исправлении при вставке будут перезаписаны только указанные поля. В этом случае вы можете создать новый объект, присвоить ему тот же идентификатор, что и обновляемый объект, установить обновляемые поля и выполнить запрос на исправление.
  • Размеры . Физические размеры представлены объектом Size , определенным службой размеров . Учетная запись предоставляет набор стандартных размеров, и вы можете добавить в этот список свои собственные размеры.
  • Даты и время . Вы можете сохранять дату/время в формате RFC 3339 , используя местные часовые пояса; все значения, возвращаемые API, указаны в формате UTC. Это отличается от веб-сайта, где даты и время отображаются в настроенном вами часовом поясе (по умолчанию время Америки/Нью-Йорка).

Создать рекламодателя

  1. Создайте объект Advertiser и задайте для него необходимые свойства имени и статуса .
    // Create the advertiser structure.
    Advertiser advertiser = new Advertiser();
    advertiser
    .Name = advertiserName;
    advertiser
    .Status = "APPROVED";
  2. Вызовите advertisers.insert() , чтобы сохранить рекламодателя.
    // Create the advertiser.
    Advertiser result = service.Advertisers.Insert(advertiser, profileId).Execute();
  1. Создайте объект Advertiser и задайте для него необходимые свойства имени и статуса .
    // Create the advertiser structure.
    Advertiser advertiser = new Advertiser();
    advertiser
    .setName(advertiserName);
    advertiser
    .setStatus("APPROVED");
  2. Вызовите advertisers.insert() , чтобы сохранить рекламодателя.
    // Create the advertiser.
    Advertiser result = reporting.advertisers().insert(profileId, advertiser).execute();
  1. Создайте объект Advertiser и задайте для него необходимые свойства имени и статуса .
    $advertiser = new Google_Service_Dfareporting_Advertiser();
    $advertiser
    ->setName($values['advertiser_name']);
    $advertiser
    ->setStatus('APPROVED');
  2. Вызовите advertisers.insert() , чтобы сохранить рекламодателя.
    $result = $this->service->advertisers->insert(
        $values
    ['user_profile_id'],
        $advertiser
    );
  1. Создайте объект Advertiser и задайте для него необходимые свойства имени и статуса .
    # Construct and save advertiser.
    advertiser
    = {
       
    'name': 'Test Advertiser',
       
    'status': 'APPROVED'
    }
  2. Вызовите advertisers.insert() , чтобы сохранить рекламодателя.
    request = service.advertisers().insert(
        profileId
    =profile_id, body=advertiser)

    # Execute request and print response.
    response
    = request.execute()
  1. Создайте объект Advertiser и задайте для него необходимые свойства имени и статуса .
    # Create a new advertiser resource to insert.
    advertiser
    = DfareportingUtils::API_NAMESPACE::Advertiser.new(
      name
    : format('Example Advertiser #%s', SecureRandom.hex(3)),
      status
    : 'APPROVED'
    )
  2. Вызовите advertisers.insert() , чтобы сохранить рекламодателя.
    # Insert the advertiser.
    result
    = service.insert_advertiser(profile_id, advertiser)

Создать кампанию

  1. Создайте объект Campaign и установите его необходимые свойства:

    • advertiserId – рекламодатель, с которым можно связать эту кампанию.
    • name – оно должно быть уникальным во всех кампаниях этого рекламодателя.
    • defaultLandingPageId – целевая страница, на которую будут перенаправляться пользователи, когда они нажимают на объявление в этой кампании, если оно не назначено этому объявлению. Вы можете найти существующие целевые страницы, вызвав advertiserLandingPages.list , или создать новую, вызвав advertiserLandingPages.insert .
    • Даты начала и окончания . Они должны быть в будущем и могут быть точными с точностью до дня. Более подробную информацию см. в списке дат и времени в разделе «Общая информация о кодировании» . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к указанной дате окончания кампании.
    // Locate an advertiser landing page to use as a default.
    LandingPage defaultLandingPage = getAdvertiserLandingPage(service, profileId, advertiserId);

    // Create the campaign structure.
    Campaign campaign = new Campaign();
    campaign
    .Name = campaignName;
    campaign
    .AdvertiserId = advertiserId;
    campaign
    .Archived = false;
    campaign
    .DefaultLandingPageId = defaultLandingPage.Id;

    // Set the campaign start date. This example uses today's date.
    campaign
    .StartDate =
       
    DfaReportingDateConverterUtil.convertToDateString(DateTime.Now);

    // Set the campaign end date. This example uses one month from today's date.
    campaign
    .EndDate =
       
    DfaReportingDateConverterUtil.convertToDateString(DateTime.Now.AddMonths(1));
  2. Вызовите campaigns.insert() чтобы сохранить кампанию.

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

  1. Создайте объект Campaign и установите его необходимые свойства:

    • advertiserId – рекламодатель, с которым можно связать эту кампанию.
    • name – оно должно быть уникальным во всех кампаниях этого рекламодателя.
    • defaultLandingPageId – целевая страница, на которую будут перенаправляться пользователи, когда они нажимают на объявление в этой кампании, если оно не назначено этому объявлению. Вы можете найти существующие целевые страницы, вызвав advertiserLandingPages.list , или создать новую, вызвав advertiserLandingPages.insert .
    • Даты начала и окончания . Они должны быть в будущем и могут быть точными с точностью до дня. Более подробную информацию см. в списке дат и времени в разделе «Общая информация о кодировании» . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к указанной дате окончания кампании.
    // Locate an advertiser landing page to use as a default.
    LandingPage defaultLandingPage = getAdvertiserLandingPage(reporting, profileId, advertiserId);

    // Create the campaign structure.
    Campaign campaign = new Campaign();
    campaign
    .setName(campaignName);
    campaign
    .setAdvertiserId(advertiserId);
    campaign
    .setArchived(false);
    campaign
    .setDefaultLandingPageId(defaultLandingPage.getId());

    // Set the campaign start date. This example uses today's date.
    Calendar today = Calendar.getInstance();
    DateTime startDate = new DateTime(true, today.getTimeInMillis(), null);
    campaign
    .setStartDate(startDate);

    // Set the campaign end date. This example uses one month from today's date.
    Calendar nextMonth = Calendar.getInstance();
    nextMonth
    .add(Calendar.MONTH, 1);
    DateTime endDate = new DateTime(true, nextMonth.getTimeInMillis(), null);
    campaign
    .setEndDate(endDate);
  2. Вызовите campaigns.insert() чтобы сохранить кампанию.

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

  1. Создайте объект Campaign и установите его необходимые свойства:

    • advertiserId – рекламодатель, с которым можно связать эту кампанию.
    • name – оно должно быть уникальным во всех кампаниях этого рекламодателя.
    • defaultLandingPageId – целевая страница, на которую будут перенаправляться пользователи, когда они нажимают на объявление в этой кампании, если оно не назначено этому объявлению. Вы можете найти существующие целевые страницы, вызвав advertiserLandingPages.list , или создать новую, вызвав advertiserLandingPages.insert .
    • Даты начала и окончания . Они должны быть в будущем и могут быть точными с точностью до дня. Более подробную информацию см. в списке дат и времени в разделе «Общая информация о кодировании» . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к указанной дате окончания кампании.
    $startDate = new DateTime('today');
    $endDate
    = new DateTime('+1 month');

    $campaign
    = new Google_Service_Dfareporting_Campaign();
    $campaign
    ->setAdvertiserId($values['advertiser_id']);
    $campaign
    ->setDefaultLandingPageId($values['default_landing_page_id']);
    $campaign
    ->setName($values['campaign_name']);
    $campaign
    ->setStartDate($startDate->format('Y-m-d'));
    $campaign
    ->setEndDate($endDate->format('Y-m-d'));
  2. Вызовите campaigns.insert() чтобы сохранить кампанию.

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

  1. Создайте объект Campaign и установите его необходимые свойства:

    • advertiserId – рекламодатель, с которым можно связать эту кампанию.
    • name – оно должно быть уникальным во всех кампаниях этого рекламодателя.
    • defaultLandingPageId – целевая страница, на которую будут перенаправляться пользователи, когда они нажимают на объявление в этой кампании, если оно не назначено этому объявлению. Вы можете найти существующие целевые страницы, вызвав advertiserLandingPages.list , или создать новую, вызвав advertiserLandingPages.insert .
    • Даты начала и окончания . Они должны быть в будущем и могут быть точными с точностью до дня. Более подробную информацию см. в списке дат и времени в разделе «Общая информация о кодировании» . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к указанной дате окончания кампании.
    # Locate an advertiser landing page to use as a default.
    default_landing_page
    = get_advertiser_landing_page(service, profile_id,
                                                       advertiser_id
    )

    # Construct and save campaign.
    campaign
    = {
       
    'name': 'Test Campaign #%s' % uuid.uuid4(),
       
    'advertiserId': advertiser_id,
       
    'archived': 'false',
       
    'defaultLandingPageId': default_landing_page['id'],
       
    'startDate': '2015-01-01',
       
    'endDate': '2020-01-01'
    }
  2. Вызовите campaigns.insert() чтобы сохранить кампанию.

    request = service.campaigns().insert(profileId=profile_id, body=campaign)

    # Execute request and print response.
    response
    = request.execute()

  1. Создайте объект Campaign и установите его необходимые свойства:

    • advertiserId – рекламодатель, с которым можно связать эту кампанию.
    • name – оно должно быть уникальным во всех кампаниях этого рекламодателя.
    • defaultLandingPageId – целевая страница, на которую будут перенаправляться пользователи, когда они нажимают на объявление в этой кампании, если оно не назначено этому объявлению. Вы можете найти существующие целевые страницы, вызвав advertiserLandingPages.list , или создать новую, вызвав advertiserLandingPages.insert .
    • Даты начала и окончания . Они должны быть в будущем и могут быть точными с точностью до дня. Более подробную информацию см. в списке дат и времени в разделе «Общая информация о кодировании» . Даты отдельных объявлений могут превышать дату окончания, чтобы издатель мог попытаться выполнить контракт на определенное количество действий, если он не был выполнен к указанной дате окончания кампании.
    # Locate an advertiser landing page to use as a default.
    default_landing_page
    = get_advertiser_landing_page(service, profile_id,
      advertiser_id
    )

    # Create a new campaign resource to insert.
    campaign
    = DfareportingUtils::API_NAMESPACE::Campaign.new(
      advertiser_id
    : advertiser_id,
      archived
    : false,
      default_landing_page_id
    : default_landing_page.id,
      name
    : format('Example Campaign #%s', SecureRandom.hex(3)),
      start_date
    : '2014-01-01',
      end_date
    : '2020-01-01'
    )
  2. Вызовите campaigns.insert() чтобы сохранить кампанию.

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

Создать место размещения

  1. Создайте объект Placement и задайте необходимые свойства места размещения (включая campaignId и siteId ). Кроме того, обязательно укажите тип и размер места размещения точно в соответствии с местом размещения, о котором вы договорились со своим веб-сайтом.
    // Create the placement.
    Placement placement = new Placement();
    placement
    .Name = placementName;
    placement
    .CampaignId = campaignId;
    placement
    .Compatibility = "DISPLAY";
    placement
    .PaymentSource = "PLACEMENT_AGENCY_PAID";
    placement
    .SiteId = dfaSiteId;
    placement
    .TagFormats = new List<string>() { "PLACEMENT_TAG_STANDARD" };

    // Set the size of the placement.
    Size size = new Size();
    size
    .Id = sizeId;
    placement
    .Size = size;
  2. Создайте новый объект PricingSchedule , который будет назначен месту размещения.
    // Set the pricing schedule for the placement.
    PricingSchedule pricingSchedule = new PricingSchedule();
    pricingSchedule
    .EndDate = campaign.EndDate;
    pricingSchedule
    .PricingType = "PRICING_TYPE_CPM";
    pricingSchedule
    .StartDate = campaign.StartDate;
    placement
    .PricingSchedule = pricingSchedule;
  3. Сохраните объект Placement , вызвав placements.insert() . Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    Placement result = service.Placements.Insert(placement, profileId).Execute();
  1. Создайте объект Placement и задайте необходимые свойства места размещения (включая campaignId и siteId ). Кроме того, обязательно укажите тип и размер места размещения точно в соответствии с местом размещения, о котором вы договорились со своим веб-сайтом.
    // Create the placement.
    Placement placement = new Placement();
    placement
    .setName(placementName);
    placement
    .setCampaignId(campaignId);
    placement
    .setCompatibility("DISPLAY");
    placement
    .setPaymentSource("PLACEMENT_AGENCY_PAID");
    placement
    .setSiteId(dfaSiteId);
    placement
    .setTagFormats(ImmutableList.of("PLACEMENT_TAG_STANDARD"));

    // Set the size of the placement.
    Size size = new Size();
    size
    .setId(sizeId);
    placement
    .setSize(size);
  2. Создайте новый объект PricingSchedule , который будет назначен месту размещения.
    // Set the pricing schedule for the placement.
    PricingSchedule pricingSchedule = new PricingSchedule();
    pricingSchedule
    .setEndDate(campaign.getEndDate());
    pricingSchedule
    .setPricingType("PRICING_TYPE_CPM");
    pricingSchedule
    .setStartDate(campaign.getStartDate());
    placement
    .setPricingSchedule(pricingSchedule);
  3. Сохраните объект Placement , вызвав placements.insert() . Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    Placement result = reporting.placements().insert(profileId, placement).execute();
  1. Создайте объект Placement и задайте необходимые свойства места размещения (включая campaignId и siteId ). Кроме того, обязательно укажите тип и размер места размещения точно в соответствии с местом размещения, о котором вы договорились со своим веб-сайтом.
    $placement = new Google_Service_Dfareporting_Placement();
    $placement
    ->setCampaignId($values['campaign_id']);
    $placement
    ->setCompatibility('DISPLAY');
    $placement
    ->setName($values['placement_name']);
    $placement
    ->setPaymentSource('PLACEMENT_AGENCY_PAID');
    $placement
    ->setSiteId($values['site_id']);
    $placement
    ->setTagFormats(['PLACEMENT_TAG_STANDARD']);

    // Set the size of the placement.
    $size
    = new Google_Service_Dfareporting_Size();
    $size
    ->setId($values['size_id']);
    $placement
    ->setSize($size);
  2. Создайте новый объект PricingSchedule , который будет назначен месту размещения.
    // Set the pricing schedule for the placement.
    $pricingSchedule
    = new Google_Service_Dfareporting_PricingSchedule();
    $pricingSchedule
    ->setEndDate($campaign->getEndDate());
    $pricingSchedule
    ->setPricingType('PRICING_TYPE_CPM');
    $pricingSchedule
    ->setStartDate($campaign->getStartDate());
    $placement
    ->setPricingSchedule($pricingSchedule);
  3. Сохраните объект Placement , вызвав placements.insert() . Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    $result
    = $this->service->placements->insert(
        $values
    ['user_profile_id'],
        $placement
    );
  1. Создайте объект Placement и задайте необходимые свойства места размещения (включая campaignId и siteId ). Кроме того, обязательно укажите тип и размер места размещения точно в соответствии с местом размещения, о котором вы договорились со своим веб-сайтом.
    # Construct and save placement.
    placement
    = {
       
    'name': 'Test Placement',
       
    'campaignId': campaign_id,
       
    'compatibility': 'DISPLAY',
       
    'siteId': site_id,
       
    'size': {
           
    'height': '1',
           
    'width': '1'
       
    },
       
    'paymentSource': 'PLACEMENT_AGENCY_PAID',
       
    'tagFormats': ['PLACEMENT_TAG_STANDARD']
    }
  2. Создайте новый объект PricingSchedule , который будет назначен месту размещения.
    # Set the pricing schedule for the placement.
    placement
    ['pricingSchedule'] = {
       
    'startDate': campaign['startDate'],
       
    'endDate': campaign['endDate'],
       
    'pricingType': 'PRICING_TYPE_CPM'
    }
  3. Сохраните объект Placement , вызвав placements.insert() . Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.
    request = service.placements().insert(profileId=profile_id, body=placement)

    # Execute request and print response.
    response
    = request.execute()
  1. Создайте объект Placement и задайте необходимые свойства места размещения (включая campaignId и siteId ). Кроме того, обязательно укажите тип и размер места размещения точно в соответствии с местом размещения, о котором вы договорились со своим веб-сайтом.
    # Create a new placement resource to insert.
    placement
    = DfareportingUtils::API_NAMESPACE::Placement.new(
      campaign_id
    : campaign_id,
      compatibility
    : 'DISPLAY',
      name
    : 'Example Placement',
      payment_source
    : 'PLACEMENT_AGENCY_PAID',
      site_id
    : site_id,
      size
    : DfareportingUtils::API_NAMESPACE::Size.new(
        height
    : 1,
        width
    : 1
     
    ),
      tag_formats
    : ['PLACEMENT_TAG_STANDARD']
    )
  2. Создайте новый объект PricingSchedule , который будет назначен месту размещения.
    # Set the pricing schedule for the placement.
    placement
    .pricing_schedule =
     
    DfareportingUtils::API_NAMESPACE::PricingSchedule.new(
        end_date
    : campaign.end_date,
        pricing_type
    : 'PRICING_TYPE_CPM',
        start_date
    : campaign.start_date
     
    )
  3. Сохраните объект Placement , вызвав placements.insert() . Обязательно сохраните возвращенный идентификатор, если хотите использовать его для назначения объявлению или креативу.
    # Insert the placement strategy.
    result
    = service.insert_placement(profile_id, placement)

Загрузить ресурсы

Вы можете загрузить множество типов ресурсов с помощью процесса, известного как загрузка мультимедиа . Хотя этот процесс аналогичен для всех типов объявлений, для правильного использования некоторых типов может потребоваться передача определенных свойств в качестве метаданных.

  1. Создайте объект assetIdentifier и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указать assetIdentifier . При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:

    • Свойство name , которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы увидеть, было ли оно изменено.
    • Свойство type , определяющее тип актива. Это свойство будет определять типы объявлений, с которыми может быть связан этот ресурс.
    // Create the creative asset ID and Metadata.
    CreativeAssetId assetId = new CreativeAssetId();
    assetId
    .Name = Path.GetFileName(assetFile);
    assetId
    .Type = assetType;
  2. Загрузите файл, вызвав creativeAssets.insert() . Выполните многочастную загрузку , передав как assetIdentifier , так и содержимое файла как часть одного и того же запроса. В случае успеха будет возвращен ресурс CreativeAsset с assetIdentifier , который вы будете использовать для назначения этого ресурса креативу.

    // Prepare an input stream.
    FileStream assetContent = new FileStream(assetFile, FileMode.Open, FileAccess.Read);


    CreativeAssetMetadata metaData = new CreativeAssetMetadata();
    metaData
    .AssetIdentifier = assetId;

    // Insert the creative.
    String mimeType = determineMimeType(assetFile, assetType);
    CreativeAssetsResource.InsertMediaUpload request =
       
    Service.CreativeAssets.Insert(metaData, ProfileId, AdvertiserId, assetContent, mimeType);

    IUploadProgress progress = request.Upload();
    if (UploadStatus.Failed.Equals(progress.Status)) {
       
    throw progress.Exception;
    }

  1. Создайте объект assetIdentifier и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указать assetIdentifier . При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:

    • Свойство name , которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы увидеть, было ли оно изменено.
    • Свойство type , определяющее тип актива. Это свойство будет определять типы объявлений, с которыми может быть связан этот ресурс.
    // Create the creative asset ID and Metadata.
    CreativeAssetId assetId = new CreativeAssetId();
    assetId
    .setName(assetName);
    assetId
    .setType(assetType);
  2. Загрузите файл, вызвав creativeAssets.insert() . Выполните многочастную загрузку , передав как assetIdentifier , так и содержимое файла как часть одного и того же запроса. В случае успеха будет возвращен ресурс CreativeAsset с assetIdentifier , который вы будете использовать для назначения этого ресурса креативу.

    // Open the asset file.
    File file = new File(assetFile);

    // Prepare an input stream.
    String contentType = getMimeType(assetFile);
    InputStreamContent assetContent =
       
    new InputStreamContent(contentType, new BufferedInputStream(new FileInputStream(file)));
    assetContent
    .setLength(file.length());


    CreativeAssetMetadata metaData = new CreativeAssetMetadata();
    metaData
    .setAssetIdentifier(assetId);

    // Insert the creative.
    CreativeAssetMetadata result = reporting.creativeAssets()
       
    .insert(profileId, advertiserId, metaData, assetContent).execute();

  1. Создайте объект assetIdentifier и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указать assetIdentifier . При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:

    • Свойство name , которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы увидеть, было ли оно изменено.
    • Свойство type , определяющее тип актива. Это свойство будет определять типы объявлений, с которыми может быть связан этот ресурс.
    $assetId = new Google_Service_Dfareporting_CreativeAssetId();
    $assetId
    ->setName($asset['name']);
    $assetId
    ->setType($type);
  2. Загрузите файл, вызвав creativeAssets.insert() . Выполните многочастную загрузку , передав как assetIdentifier , так и содержимое файла как часть одного и того же запроса. В случае успеха будет возвращен ресурс CreativeAsset с assetIdentifier , который вы будете использовать для назначения этого ресурса креативу.

    $metadata = new Google_Service_Dfareporting_CreativeAssetMetadata();
    $metadata
    ->setAssetIdentifier($assetId);

    $result
    = $service->creativeAssets->insert(
        $userProfileId
    ,
        $advertiserId
    ,
        $metadata
    ,
       
    ['data' => file_get_contents($asset['tmp_name']),
         
    'mimeType' => $asset['type'],
         
    'uploadType' => 'multipart']
    );

  1. Создайте объект assetIdentifier и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указать assetIdentifier . При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:

    • Свойство name , которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы увидеть, было ли оно изменено.
    • Свойство type , определяющее тип актива. Это свойство будет определять типы объявлений, с которыми может быть связан этот ресурс.
    # Construct the creative asset metadata
    creative_asset
    = {'assetIdentifier': {'name': asset_name, 'type': asset_type}}
  2. Загрузите файл, вызвав creativeAssets.insert() . Выполните многочастную загрузку , передав как assetIdentifier , так и содержимое файла как часть одного и того же запроса. В случае успеха будет возвращен ресурс CreativeAsset с assetIdentifier , который вы будете использовать для назначения этого ресурса креативу.

    media = MediaFileUpload(path_to_asset_file)
    if not media.mimetype():
      media
    = MediaFileUpload(path_to_asset_file, 'application/octet-stream')

    response
    = service.creativeAssets().insert(
        advertiserId
    =advertiser_id,
        profileId
    =profile_id,
        media_body
    =media,
        body
    =creative_asset).execute()

  1. Создайте объект assetIdentifier и задайте необходимые свойства. Для всех активов, независимо от их типа и способа использования, необходимо указать assetIdentifier . При назначении ресурса креативу этот объект будет использоваться для обратной ссылки на ресурс. Требуются следующие свойства:

    • Свойство name , которое будет именем ресурса на сервере. Имя должно включать расширение, указывающее тип файла, например .png или .gif, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Менеджер кампании 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы увидеть, было ли оно изменено.
    • Свойство type , определяющее тип актива. Это свойство будет определять типы объявлений, с которыми может быть связан этот ресурс.
    # Construct the creative asset metadata
    creative_asset
    = DfareportingUtils::API_NAMESPACE::CreativeAsset.new(
      asset_identifier
    : DfareportingUtils::API_NAMESPACE::CreativeAssetId.new(
        name
    : asset_name,
        type
    : asset_type
     
    )
    )
  2. Загрузите файл, вызвав creativeAssets.insert() . Выполните многочастную загрузку , передав как assetIdentifier , так и содержимое файла как часть одного и того же запроса. В случае успеха будет возвращен ресурс CreativeAsset с assetIdentifier , который вы будете использовать для назначения этого ресурса креативу.

    # Upload the asset.
    mime_type
    = determine_mime_type(path_to_asset_file, asset_type)

    result
    = @service.insert_creative_asset(
     
    @profile_id,
      advertiser_id
    ,
      creative_asset
    ,
      content_type
    : mime_type,
      upload_source
    : path_to_asset_file
    )

Создать креатив

Объект Creative оборачивает существующий ресурс. В зависимости от того, как вы будете использовать креативы на главной странице, вы можете создавать объекты Creative разных типов креативов. См. справочную документацию , чтобы определить, какой тип подходит вам.

В следующем примере показано, как создать новый медийный креатив HTML5.

  1. Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор assetIdenfitier ; вы будете использовать сохраненное имя и тип файла для ссылки на эти ресурсы в своем объявлении, а не традиционный идентификатор.
  2. Создайте креатив и присвойте ему соответствующие значения. Создайте Creative и установите правильный type ; вы не можете изменить тип объекта Creative после его сохранения. Укажите активы по их AssetIdentifier и их role .
    // Locate an advertiser landing page to use as a default.
    LandingPage defaultLandingPage = getAdvertiserLandingPage(service, profileId, advertiserId);

    // Create the creative structure.
    Creative creative = new Creative();
    creative
    .AdvertiserId = advertiserId;
    creative
    .Name = "Test HTML5 display creative";
    creative
    .Size = new Size() { Id = sizeId };
    creative
    .Type = "DISPLAY";

    // Upload the HTML5 asset.
    CreativeAssetUtils assetUtils = new CreativeAssetUtils(service, profileId, advertiserId);
    CreativeAssetId html5AssetId =
        assetUtils
    .uploadAsset(pathToHtml5AssetFile, "HTML").AssetIdentifier;

    CreativeAsset html5Asset = new CreativeAsset();
    html5Asset
    .AssetIdentifier = html5AssetId;
    html5Asset
    .Role = "PRIMARY";

    // Upload the backup image asset.
    CreativeAssetId imageAssetId =
        assetUtils
    .uploadAsset(pathToImageAssetFile, "HTML_IMAGE").AssetIdentifier;

    CreativeAsset imageAsset = new CreativeAsset();
    imageAsset
    .AssetIdentifier = imageAssetId;
    imageAsset
    .Role = "BACKUP_IMAGE";

    // Add the creative assets.
    creative
    .CreativeAssets = new List<CreativeAsset>() { html5Asset, imageAsset };

    // Configure the bacup image.
    creative
    .BackupImageClickThroughUrl = new CreativeClickThroughUrl() {
     
    LandingPageId = defaultLandingPage.Id
    };
    creative
    .BackupImageReportingLabel = "backup";
    creative
    .BackupImageTargetWindow = new TargetWindow() { TargetWindowOption = "NEW_WINDOW" };

    // Add a click tag.
    ClickTag clickTag = new ClickTag();
    clickTag
    .Name = "clickTag";
    clickTag
    .EventName = "exit";
    clickTag
    .ClickThroughUrl = new CreativeClickThroughUrl() {
     
    LandingPageId = defaultLandingPage.Id
    };
    creative
    .ClickTags = new List<ClickTag>() { clickTag };
  3. Сохраните креатив. Сделайте это, вызвав creatives.insert() . Необходимо указать идентификатор рекламодателя, с которым можно связать этот креатив.
    Creative result = service.Creatives.Insert(creative, profileId).Execute();
  4. (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав campaignCreativeAssociations.insert() , передав идентификаторы кампании и объявления.
    // Create the campaign creative association structure.
    CampaignCreativeAssociation association = new CampaignCreativeAssociation();
    association
    .CreativeId = creativeId;

    // Insert the association.
    CampaignCreativeAssociation result =
        service
    .CampaignCreativeAssociations.Insert(association, profileId, campaignId).Execute();
  1. Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор assetIdenfitier ; вы будете использовать сохраненное имя и тип файла для ссылки на эти ресурсы в своем объявлении, а не традиционный идентификатор.
  2. Создайте креатив и присвойте ему соответствующие значения. Создайте Creative и установите правильный type ; вы не можете изменить тип объекта Creative после его сохранения. Укажите активы по их AssetIdentifier и их role .
    // Locate an advertiser landing page to use as a default.
    LandingPage defaultLandingPage = getAdvertiserLandingPage(reporting, profileId, advertiserId);

    // Create the creative structure.
    Creative creative = new Creative();
    creative
    .setAdvertiserId(advertiserId);
    creative
    .setName("Test HTML5 display creative");
    creative
    .setSize(new Size().setId(sizeId));
    creative
    .setType("DISPLAY");

    // Upload the HTML5 asset.
    CreativeAssetId html5AssetId = CreativeAssetUtils.uploadAsset(reporting, profileId,
        advertiserId
    , HTML5_ASSET_NAME, PATH_TO_HTML5_ASSET_FILE, "HTML").getAssetIdentifier();

    CreativeAsset html5Asset =
       
    new CreativeAsset().setAssetIdentifier(html5AssetId).setRole("PRIMARY");

    // Upload the backup image asset (note: asset type must be set to HTML_IMAGE).
    CreativeAssetId imageAssetId = CreativeAssetUtils.uploadAsset(reporting, profileId,
        advertiserId
    , IMAGE_ASSET_NAME, PATH_TO_IMAGE_ASSET_FILE, "HTML_IMAGE")
       
    .getAssetIdentifier();

    CreativeAsset backupImageAsset =
       
    new CreativeAsset().setAssetIdentifier(imageAssetId).setRole("BACKUP_IMAGE");

    // Add the creative assets.
    creative
    .setCreativeAssets(ImmutableList.of(html5Asset, backupImageAsset));

    // Configure the backup image.
    creative
    .setBackupImageClickThroughUrl(
       
    new CreativeClickThroughUrl().setLandingPageId(defaultLandingPage.getId()));
    creative
    .setBackupImageReportingLabel("backup");
    creative
    .setBackupImageTargetWindow(new TargetWindow().setTargetWindowOption("NEW_WINDOW"));

    // Add a click tag.
    ClickTag clickTag =
       
    new ClickTag().setName("clickTag").setEventName("exit").setClickThroughUrl(
           
    new CreativeClickThroughUrl().setLandingPageId(defaultLandingPage.getId()));
    creative
    .setClickTags(ImmutableList.of(clickTag));
  3. Сохраните креатив. Сделайте это, вызвав creatives.insert() . Необходимо указать идентификатор рекламодателя, с которым можно связать этот креатив.
    Creative result = reporting.creatives().insert(profileId, creative).execute();
  4. (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав campaignCreativeAssociations.insert() , передав идентификаторы кампании и объявления.
    // Create the campaign creative association structure.
    CampaignCreativeAssociation association = new CampaignCreativeAssociation();
    association
    .setCreativeId(creativeId);

    // Insert the association.
    CampaignCreativeAssociation result = reporting
       
    .campaignCreativeAssociations().insert(profileId, campaignId, association)
       
    .execute();
  1. Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор assetIdenfitier ; вы будете использовать сохраненное имя и тип файла для ссылки на эти ресурсы в своем объявлении, а не традиционный идентификатор.
  2. Создайте креатив и присвойте ему соответствующие значения. Создайте Creative и установите правильный type ; вы не можете изменить тип объекта Creative после его сохранения. Укажите активы по их AssetIdentifier и их role .
    $creative = new Google_Service_Dfareporting_Creative();
    $creative
    ->setAdvertiserId($values['advertiser_id']);
    $creative
    ->setAutoAdvanceImages(true);
    $creative
    ->setName('Test HTML5 display creative');
    $creative
    ->setType('DISPLAY');

    $size
    = new Google_Service_Dfareporting_Size();
    $size
    ->setId($values['size_id']);
    $creative
    ->setSize($size);

    // Upload the HTML5 asset.
    $html
    = uploadAsset(
        $this
    ->service,
        $values
    ['user_profile_id'],
        $values
    ['advertiser_id'],
        $values
    ['html_asset_file'],
       
    'HTML'
    );

    $htmlAsset
    = new Google_Service_Dfareporting_CreativeAsset();
    $htmlAsset
    ->setAssetIdentifier($html->getAssetIdentifier());
    $htmlAsset
    ->setRole('PRIMARY');

    // Upload the backup image asset.
    $image
    = uploadAsset(
        $this
    ->service,
        $values
    ['user_profile_id'],
        $values
    ['advertiser_id'],
        $values
    ['image_asset_file'],
       
    'HTML_IMAGE'
    );

    $imageAsset
    = new Google_Service_Dfareporting_CreativeAsset();
    $imageAsset
    ->setAssetIdentifier($image->getAssetIdentifier());
    $imageAsset
    ->setRole('BACKUP_IMAGE');

    // Add the creative assets.
    $creative
    ->setCreativeAssets([$htmlAsset, $imageAsset]);

    // Configure the default click-through URL.
    $clickThroughUrl
    =
       
    new Google_Service_Dfareporting_CreativeClickThroughUrl();
    $clickThroughUrl
    ->setLandingPageId($values['landing_page_id']);

    // Configure the backup image.
    $creative
    ->setBackupImageClickThroughUrl($clickThroughUrl);
    $creative
    ->setBackupImageReportingLabel('backup');

    $targetWindow
    = new Google_Service_Dfareporting_TargetWindow();
    $targetWindow
    ->setTargetWindowOption('NEW_WINDOW');
    $creative
    ->setBackupImageTargetWindow($targetWindow);

    // Add a click tag.
    $clickTag
    = new Google_Service_Dfareporting_ClickTag();
    $clickTag
    ->setName('clickTag');
    $clickTag
    ->setEventName('exit');
    $clickTag
    ->setClickThroughUrl($clickThroughUrl);
    $creative
    ->setClickTags([$clickTag]);
  3. Сохраните креатив. Сделайте это, вызвав creatives.insert() . Необходимо указать идентификатор рекламодателя, с которым можно связать этот креатив.
    $result = $this->service->creatives->insert(
        $values
    ['user_profile_id'],
        $creative
    );
  4. (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав campaignCreativeAssociations.insert() , передав идентификаторы кампании и объявления.
    $association =
       
    new Google_Service_Dfareporting_CampaignCreativeAssociation();
    $association
    ->setCreativeId($values['creative_id']);

    $result
    = $this->service->campaignCreativeAssociations->insert(
        $values
    ['user_profile_id'],
        $values
    ['campaign_id'],
        $association
    );
  1. Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор assetIdenfitier ; вы будете использовать сохраненное имя и тип файла для ссылки на эти ресурсы в своем объявлении, а не традиционный идентификатор.
  2. Создайте креатив и присвойте ему соответствующие значения. Создайте Creative и установите правильный type ; вы не можете изменить тип объекта Creative после его сохранения. Укажите активы по их AssetIdentifier и их role .
    # Locate an advertiser landing page to use as a default.
    default_landing_page
    = get_advertiser_landing_page(service, profile_id,
                                                       advertiser_id
    )

    # Upload the HTML5 asset
    html5_asset_id
    = upload_creative_asset(service, profile_id, advertiser_id,
                                           html5_asset_name
    ,
                                           path_to_html5_asset_file
    , 'HTML')

    # Upload the backup image asset
    backup_image_asset_id
    = upload_creative_asset(
        service
    , profile_id, advertiser_id, backup_image_name,
        path_to_backup_image_file
    , 'HTML_IMAGE')

    # Construct the creative structure.
    creative
    = {
       
    'advertiserId': advertiser_id,
       
    'backupImageClickThroughUrl': {
           
    'landingPageId': default_landing_page['id']
       
    },
       
    'backupImageReportingLabel': 'backup_image_exit',
       
    'backupImageTargetWindow': {'targetWindowOption': 'NEW_WINDOW'},
       
    'clickTags': [{
           
    'eventName': 'exit',
           
    'name': 'click_tag',
           
    'clickThroughUrl': {'landingPageId': default_landing_page['id']}
       
    }],
       
    'creativeAssets': [
           
    {'assetIdentifier': html5_asset_id, 'role': 'PRIMARY'},
           
    {'assetIdentifier': backup_image_asset_id, 'role': 'BACKUP_IMAGE'}
       
    ],
       
    'name': 'Test HTML5 display creative',
       
    'size': {'id': size_id},
       
    'type': 'DISPLAY'
    }
  3. Сохраните креатив. Сделайте это, вызвав creatives.insert() . Необходимо указать идентификатор рекламодателя, с которым можно связать этот креатив.
    request = service.creatives().insert(profileId=profile_id, body=creative)

    # Execute request and print response.
    response
    = request.execute()
  4. (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав campaignCreativeAssociations.insert() , передав идентификаторы кампании и объявления.
    # Construct the request.
    association
    = {
       
    'creativeId': creative_id
    }

    request
    = service.campaignCreativeAssociations().insert(
        profileId
    =profile_id, campaignId=campaign_id, body=association)

    # Execute request and print response.
    response
    = request.execute()
  1. Загрузите активы. Разные креативы требуют разных типов и количества ресурсов; подробности см. в разделе «Загрузка ресурсов» . Каждый раз, когда вы успешно загружаете актив, вы получаете в ответе идентификатор assetIdenfitier ; вы будете использовать сохраненное имя и тип файла для ссылки на эти ресурсы в своем объявлении, а не традиционный идентификатор.
  2. Создайте креатив и присвойте ему соответствующие значения. Создайте Creative и установите правильный type ; вы не можете изменить тип объекта Creative после его сохранения. Укажите активы по их AssetIdentifier и их role .
    # Locate an advertiser landing page to use as a default.
    default_landing_page
    = get_advertiser_landing_page(service, profile_id,
      advertiser_id
    )

    # Upload the HTML5 asset.
    html5_asset_id
    = util.upload_asset(advertiser_id, path_to_html5_asset_file,
     
    'HTML').asset_identifier

    # Upload the backup image asset.
    backup_image_asset_id
    = util.upload_asset(advertiser_id,
      path_to_backup_image_file
    , 'HTML_IMAGE').asset_identifier

    # Construct the creative structure.
    creative
    = DfareportingUtils::API_NAMESPACE::Creative.new(
      advertiser_id
    : advertiser_id,
      backup_image_click_through_url
    :
       
    DfareportingUtils::API_NAMESPACE::CreativeClickThroughUrl.new(
          landing_page_id
    : default_landing_page.id
       
    ),
      backup_image_reporting_label
    : 'backup',
      backup_image_target_window
    :
       
    DfareportingUtils::API_NAMESPACE::TargetWindow.new(
          target_window_option
    : 'NEW_WINDOW'
       
    ),
      click_tags
    : [
       
    DfareportingUtils::API_NAMESPACE::ClickTag.new(
          event_name
    : 'exit',
          name
    : 'click_tag',
          click_through_url
    :
           
    DfareportingUtils::API_NAMESPACE::CreativeClickThroughUrl.new(
              landing_page_id
    : default_landing_page.id
           
    )
       
    )
     
    ],
      creative_assets
    : [
       
    DfareportingUtils::API_NAMESPACE::CreativeAsset.new(
          asset_identifier
    : html5_asset_id,
          role
    : 'PRIMARY'
       
    ),
       
    DfareportingUtils::API_NAMESPACE::CreativeAsset.new(
          asset_identifier
    : backup_image_asset_id,
          role
    : 'BACKUP_IMAGE'
       
    )
     
    ],
      name
    : 'Example HTML5 display creative',
      size
    : DfareportingUtils::API_NAMESPACE::Size.new(id: size_id),
      type
    : 'DISPLAY'
    )
  3. Сохраните креатив. Сделайте это, вызвав creatives.insert() . Необходимо указать идентификатор рекламодателя, с которым можно связать этот креатив.
    # Insert the creative.
    result
    = service.insert_creative(profile_id, creative)
  4. (Необязательно) Свяжите креатив с кампанией. Это можно сделать, вызвав campaignCreativeAssociations.insert() , передав идентификаторы кампании и объявления.
    # Create a new creative-campaign association to insert
    association
    =
     
    DfareportingUtils::API_NAMESPACE::CampaignCreativeAssociation.new(
        creative_id
    : creative_id
     
    )

    # Insert the advertiser group.
    result
    = service.insert_campaign_creative_association(profile_id, campaign_id,
      association
    )

Создать объявление

Ad – это связующее звено между Creative и Placement . Ad может быть связано с одним или несколькими местами размещения и содержать один или несколько креативов.

Вы можете создать Ad явно или неявно.

Явно

  1. Создайте объект CreativeAssignment для каждого креатива, с которым должно быть связано это объявление. Обязательно установите для поля CreativeAssignment.active значение true.
    // Create a click-through URL.
    ClickThroughUrl clickThroughUrl = new ClickThroughUrl();
    clickThroughUrl
    .DefaultLandingPage = true;

    // Create a creative assignment.
    CreativeAssignment creativeAssignment = new CreativeAssignment();
    creativeAssignment
    .Active = true;
    creativeAssignment
    .CreativeId = creativeId;
    creativeAssignment
    .ClickThroughUrl = clickThroughUrl;
  2. Создайте объект CreativeRotation для хранения объектов CreativeAssignment . При создании группы ротации обязательно укажите другие обязательные поля ротации объявлений.
    // Create a creative rotation.
    CreativeRotation creativeRotation = new CreativeRotation();
    creativeRotation
    .CreativeAssignments = new List<CreativeAssignment>() {
        creativeAssignment
    };
  3. Создайте объект PlacementAssignment для каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поля PlacementAssignment.active значение true.
    // Create a placement assignment.
    PlacementAssignment placementAssignment = new PlacementAssignment();
    placementAssignment
    .Active = true;
    placementAssignment
    .PlacementId = placementId;
  4. Создайте объект Ad . Установите свойство CreativeRotation в поле creativeRotation объекта Ad , а свойство PlacementAssignments — в массив placementAssignments объекта Ad .
    // Create a delivery schedule.
    DeliverySchedule deliverySchedule = new DeliverySchedule();
    deliverySchedule
    .ImpressionRatio = 1;
    deliverySchedule
    .Priority = "AD_PRIORITY_01";

    DateTime startDate = DateTime.Now;
    DateTime endDate = Convert.ToDateTime(campaign.EndDate);

    // Create a rotation group.
    Ad rotationGroup = new Ad();
    rotationGroup
    .Active = true;
    rotationGroup
    .CampaignId = campaignId;
    rotationGroup
    .CreativeRotation = creativeRotation;
    rotationGroup
    .DeliverySchedule = deliverySchedule;
    rotationGroup
    .StartTime = startDate;
    rotationGroup
    .EndTime = endDate;
    rotationGroup
    .Name = adName;
    rotationGroup
    .PlacementAssignments = new List<PlacementAssignment>() {
        placementAssignment
    };
    rotationGroup
    .Type = "AD_SERVING_STANDARD_AD";
  5. Сохраните объявление, ads.insert() .
    // Insert the rotation group.
    Ad result = service.Ads.Insert(rotationGroup, profileId).Execute();
  1. Создайте объект CreativeAssignment для каждого креатива, с которым должно быть связано это объявление. Обязательно установите для поля CreativeAssignment.active значение true.
    // Create a click-through URL.
    ClickThroughUrl clickThroughUrl = new ClickThroughUrl();
    clickThroughUrl
    .setDefaultLandingPage(true);

    // Create a creative assignment.
    CreativeAssignment creativeAssignment = new CreativeAssignment();
    creativeAssignment
    .setActive(true);
    creativeAssignment
    .setCreativeId(creativeId);
    creativeAssignment
    .setClickThroughUrl(clickThroughUrl);
  2. Создайте объект CreativeRotation для хранения объектов CreativeAssignment . При создании группы ротации обязательно укажите другие обязательные поля ротации объявлений.
    // Create a creative rotation.
    CreativeRotation creativeRotation = new CreativeRotation();
    creativeRotation
    .setCreativeAssignments(ImmutableList.of(creativeAssignment));
  3. Создайте объект PlacementAssignment для каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поля PlacementAssignment.active значение true.
    // Create a placement assignment.
    PlacementAssignment placementAssignment = new PlacementAssignment();
    placementAssignment
    .setActive(true);
    placementAssignment
    .setPlacementId(placementId);
  4. Создайте объект Ad . Установите свойство CreativeRotation в поле creativeRotation объекта Ad , а свойство PlacementAssignments — в массив placementAssignments объекта Ad .
    // Create a delivery schedule.
    DeliverySchedule deliverySchedule = new DeliverySchedule();
    deliverySchedule
    .setImpressionRatio(1L);
    deliverySchedule
    .setPriority("AD_PRIORITY_01");

    DateTime startDate = new DateTime(new Date());
    DateTime endDate = new DateTime(campaign.getEndDate().getValue());

    // Create a rotation group.
    Ad rotationGroup = new Ad();
    rotationGroup
    .setActive(true);
    rotationGroup
    .setCampaignId(campaignId);
    rotationGroup
    .setCreativeRotation(creativeRotation);
    rotationGroup
    .setDeliverySchedule(deliverySchedule);
    rotationGroup
    .setStartTime(startDate);
    rotationGroup
    .setEndTime(endDate);
    rotationGroup
    .setName(adName);
    rotationGroup
    .setPlacementAssignments(ImmutableList.of(placementAssignment));
    rotationGroup
    .setType("AD_SERVING_STANDARD_AD");
  5. Сохраните объявление, ads.insert() .
    // Insert the rotation group.
    Ad result = reporting.ads().insert(profileId, rotationGroup).execute();
  1. Создайте объект CreativeAssignment для каждого креатива, с которым должно быть связано это объявление. Обязательно установите для поля CreativeAssignment.active значение true.
    // Create a click-through URL.
    $url
    = new Google_Service_Dfareporting_ClickThroughUrl();
    $url
    ->setDefaultLandingPage(true);

    // Create a creative assignment.
    $creativeAssignment
    =
       
    new Google_Service_Dfareporting_CreativeAssignment();
    $creativeAssignment
    ->setActive(true);
    $creativeAssignment
    ->setCreativeId($values['creative_id']);
    $creativeAssignment
    ->setClickThroughUrl($url);
  2. Создайте объект CreativeRotation для хранения объектов CreativeAssignment . При создании группы ротации обязательно укажите другие обязательные поля ротации объявлений.
    // Create a creative rotation.
    $creativeRotation
    = new Google_Service_Dfareporting_CreativeRotation();
    $creativeRotation
    ->setCreativeAssignments([$creativeAssignment]);
  3. Создайте объект PlacementAssignment для каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поля PlacementAssignment.active значение true.
    // Create a placement assignment.
    $placementAssignment
    =
       
    new Google_Service_Dfareporting_PlacementAssignment();
    $placementAssignment
    ->setActive(true);
    $placementAssignment
    ->setPlacementId($values['placement_id']);
  4. Создайте объект Ad . Установите свойство CreativeRotation в поле creativeRotation объекта Ad , а свойство PlacementAssignments — в массив placementAssignments объекта Ad .
    // Create a delivery schedule.
    $deliverySchedule
    = new Google_Service_Dfareporting_DeliverySchedule();
    $deliverySchedule
    ->setImpressionRatio(1);
    $deliverySchedule
    ->SetPriority('AD_PRIORITY_01');

    $startDate
    = new DateTime('today');
    $endDate
    = new DateTime($campaign->getEndDate());

    // Create a rotation group.
    $ad
    = new Google_Service_Dfareporting_Ad();
    $ad
    ->setActive(true);
    $ad
    ->setCampaignId($values['campaign_id']);
    $ad
    ->setCreativeRotation($creativeRotation);
    $ad
    ->setDeliverySchedule($deliverySchedule);
    $ad
    ->setStartTime($startDate->format('Y-m-d') . 'T23:59:59Z');
    $ad
    ->setEndTime($endDate->format('Y-m-d') . 'T00:00:00Z');
    $ad
    ->setName($values['ad_name']);
    $ad
    ->setPlacementAssignments([$placementAssignment]);
    $ad
    ->setType('AD_SERVING_STANDARD_AD');
  5. Сохраните объявление, ads.insert() .
    $result = $this->service->ads->insert($values['user_profile_id'], $ad);
  1. Создайте объект CreativeAssignment для каждого креатива, с которым должно быть связано это объявление. Обязательно установите для поля CreativeAssignment.active значение true.
    # Construct creative assignment.
    creative_assignment
    = {
       
    'active': 'true',
       
    'creativeId': creative_id,
       
    'clickThroughUrl': {
           
    'defaultLandingPage': 'true'
       
    }
    }
  2. Создайте объект CreativeRotation для хранения объектов CreativeAssignment . При создании группы ротации обязательно укажите другие обязательные поля ротации объявлений.
    # Construct creative rotation.
    creative_rotation
    = {
       
    'creativeAssignments': [creative_assignment],
       
    'type': 'CREATIVE_ROTATION_TYPE_RANDOM',
       
    'weightCalculationStrategy': 'WEIGHT_STRATEGY_OPTIMIZED'
    }
  3. Создайте объект PlacementAssignment для каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поля PlacementAssignment.active значение true.
    # Construct placement assignment.
    placement_assignment
    = {
       
    'active': 'true',
       
    'placementId': placement_id,
    }
  4. Создайте объект Ad . Установите свойство CreativeRotation в поле creativeRotation объекта Ad , а свойство PlacementAssignments — в массив placementAssignments объекта Ad .
    # Construct delivery schedule.
    delivery_schedule
    = {
       
    'impressionRatio': '1',
       
    'priority': 'AD_PRIORITY_01'
    }

    # Construct and save ad.
    ad
    = {
       
    'active': 'true',
       
    'campaignId': campaign_id,
       
    'creativeRotation': creative_rotation,
       
    'deliverySchedule': delivery_schedule,
       
    'endTime': '%sT00:00:00Z' % campaign['endDate'],
       
    'name': 'Test Rotation Group',
       
    'placementAssignments': [placement_assignment],
       
    'startTime': '%sT23:59:59Z' % time.strftime('%Y-%m-%d'),
       
    'type': 'AD_SERVING_STANDARD_AD'
    }
  5. Сохраните объявление, ads.insert() .
    request = service.ads().insert(profileId=profile_id, body=ad)

    # Execute request and print response.
    response
    = request.execute()
  1. Создайте объект CreativeAssignment для каждого креатива, с которым должно быть связано это объявление. Обязательно установите для поля CreativeAssignment.active значение true.
    # Construct creative assignment.
    creative_assignment
    =
     
    DfareportingUtils::API_NAMESPACE::CreativeAssignment.new(
        active
    : true,
        creative_id
    : creative_id,
        click_through_url
    : DfareportingUtils::API_NAMESPACE::ClickThroughUrl.new(
          default_landing_page
    : true
       
    )
     
    )
  2. Создайте объект CreativeRotation для хранения объектов CreativeAssignment . При создании группы ротации обязательно укажите другие обязательные поля ротации объявлений.
    # Construct creative rotation.
    creative_rotation
    = DfareportingUtils::API_NAMESPACE::CreativeRotation.new(
      creative_assignments
    : [creative_assignment],
      type
    : 'CREATIVE_ROTATION_TYPE_RANDOM',
      weight_calculation_strategy
    : 'WEIGHT_STRATEGY_OPTIMIZED'
    )
  3. Создайте объект PlacementAssignment для каждого места размещения, с которым должно быть связано это объявление. Обязательно установите для поля PlacementAssignment.active значение true.
    # Construct placement assignment.
    placement_assignment
    =
     
    DfareportingUtils::API_NAMESPACE::PlacementAssignment.new(
        active
    : true,
        placement_id
    : placement_id
     
    )
  4. Создайте объект Ad . Установите свойство CreativeRotation в поле creativeRotation объекта Ad , а свойство PlacementAssignments — в массив placementAssignments объекта Ad .
    # Construct delivery schedule.
    delivery_schedule
    = DfareportingUtils::API_NAMESPACE::DeliverySchedule.new(
      impression_ratio
    : 1,
      priority
    : 'AD_PRIORITY_01'
    )

    # Construct and save ad.
    ad
    = DfareportingUtils::API_NAMESPACE::Ad.new(
      active
    : true,
      campaign_id
    : campaign_id,
      creative_rotation
    : creative_rotation,
      delivery_schedule
    : delivery_schedule,
      end_time
    : format('%sT00:00:00Z', campaign.end_date),
      name
    : 'Example Rotation Group',
      placement_assignments
    : [placement_assignment],
      start_time
    : format('%sT23:59:59Z', Time.now.strftime('%Y-%m-%d')),
      type
    : 'AD_SERVING_STANDARD_AD'
    )
  5. Сохраните объявление, ads.insert() .
    result = service.insert_ad(profile_id, ad)

Неявно

  1. Создайте и сохраните Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign которая использовалась для Placement , вызвав campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). При этом будет создано объявление по умолчанию, связанное как с креативом, так и с местом размещения.
    // Create the campaign creative association structure.
    CampaignCreativeAssociation association = new CampaignCreativeAssociation();
    association
    .CreativeId = creativeId;

    // Insert the association.
    CampaignCreativeAssociation result =
        service
    .CampaignCreativeAssociations.Insert(association, profileId, campaignId).Execute();
  1. Создайте и сохраните Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign которая использовалась для Placement , вызвав campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). При этом будет создано объявление по умолчанию, связанное как с креативом, так и с местом размещения.
    // Create the campaign creative association structure.
    CampaignCreativeAssociation association = new CampaignCreativeAssociation();
    association
    .setCreativeId(creativeId);

    // Insert the association.
    CampaignCreativeAssociation result = reporting
       
    .campaignCreativeAssociations().insert(profileId, campaignId, association)
       
    .execute();
  1. Создайте и сохраните Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign которая использовалась для Placement , вызвав campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). При этом будет создано объявление по умолчанию, связанное как с креативом, так и с местом размещения.
    $association =
       
    new Google_Service_Dfareporting_CampaignCreativeAssociation();
    $association
    ->setCreativeId($values['creative_id']);

    $result
    = $this->service->campaignCreativeAssociations->insert(
        $values
    ['user_profile_id'],
        $values
    ['campaign_id'],
        $association
    );
  1. Создайте и сохраните Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign которая использовалась для Placement , вызвав campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). При этом будет создано объявление по умолчанию, связанное как с креативом, так и с местом размещения.
    # Construct the request.
    association
    = {
       
    'creativeId': creative_id
    }

    request
    = service.campaignCreativeAssociations().insert(
        profileId
    =profile_id, campaignId=campaign_id, body=association)

    # Execute request and print response.
    response
    = request.execute()
  1. Создайте и сохраните Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign которая использовалась для Placement , вызвав campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). При этом будет создано объявление по умолчанию, связанное как с креативом, так и с местом размещения.
    # Create a new creative-campaign association to insert
    association
    =
     
    DfareportingUtils::API_NAMESPACE::CampaignCreativeAssociation.new(
        creative_id
    : creative_id
     
    )

    # Insert the advertiser group.
    result
    = service.insert_campaign_creative_association(profile_id, campaign_id,
      association
    )

Создание объявления неявно экономит дополнительный этап создания Ad . Обратите внимание, что это можно сделать только в том случае, если в вашей кампании еще не существует объявления по умолчанию указанного размера.

Поиск объектов

Вы можете искать объекты, вызвав операцию list() , предоставляемую службой, которая определяет искомый объект, указав дополнительные критерии, соответствующие этому типу объекта. Так, например, для поиска объектов Ad вы должны ads.list() . Необязательные критерии предоставляют набор свойств, подходящих для этого объекта; заполните столько свойств, сколько хотите найти. Поиск вернет только объекты, соответствующие всем вашим критериям; вы не можете выполнить поиск, соответствующий каким-либо критериям. Строки поддерживают подстановочный знак *, не чувствительны к регистру и совпадают с более крупными строками.

Для повышения производительности можно запросить частичные ответы с помощью параметра fields . Это указывает серверу возвращать только указанные вами поля, а не полное представление ресурса. Дополнительную информацию по этой теме можно найти в руководстве «Советы по производительности» .

Пейджинг

Иногда нежелательно получать все результаты запроса list() . Например, вас могут заинтересовать только 10 новейших объявлений из тысячи. Чтобы помочь в этом, многие методы list() позволяют запрашивать меньше результатов с помощью процесса, известного как пейджинг .

Методы, поддерживающие разбиение по страницам, возвращают подмножества результатов в группах, называемых страницами . Максимальное количество результатов на странице — 1000 (по умолчанию). Вы можете изменить количество результатов на странице, установив maxResults , и можете перебирать страницы, используя nextPageToken , возвращаемый в ответе:

// Limit the fields returned.
String fields = "nextPageToken,ads(advertiserId,id,name)";

AdsListResponse result;
String nextPageToken = null;

do {
 
// Create and execute the ad list request.
 
AdsResource.ListRequest request = service.Ads.List(profileId);
  request
.Active = true;
  request
.Fields = fields;
  request
.PageToken = nextPageToken;
  result
= request.Execute();

 
foreach (Ad ad in result.Ads) {
   
Console.WriteLine(
       
"Ad with ID {0} and name \"{1}\" is associated with advertiser" +
       
" ID {2}.", ad.Id, ad.Name, ad.AdvertiserId);
 
}

 
// Update the next page token.
  nextPageToken
= result.NextPageToken;
} while (result.Ads.Any() && !String.IsNullOrEmpty(nextPageToken));
// Limit the fields returned.
String fields = "nextPageToken,ads(advertiserId,id,name)";

AdsListResponse result;
String nextPageToken = null;

do {
 
// Create and execute the ad list request.
  result
= reporting.ads().list(profileId).setActive(true).setFields(fields)
     
.setPageToken(nextPageToken).execute();

 
for (Ad ad : result.getAds()) {
   
System.out.printf(
       
"Ad with ID %d and name \"%s\" is associated with advertiser ID %d.%n", ad.getId(),
        ad
.getName(), ad.getAdvertiserId());
 
}

 
// Update the next page token.
  nextPageToken
= result.getNextPageToken();
} while (!result.getAds().isEmpty() && !Strings.isNullOrEmpty(nextPageToken));
$response = null;
$pageToken
= null;

do {
   
// Create and execute the ads list request.
    $response
= $this->service->ads->listAds(
        $values
['user_profile_id'],
       
['active' => true, 'pageToken' => $pageToken]
   
);

   
foreach ($response->getAds() as $ads) {
        $this
->printResultsTableRow($ads);
   
}

   
// Update the next page token.
    $pageToken
= $response->getNextPageToken();
} while (!empty($response->getAds()) && !empty($pageToken));
# Construct the request.
request
= service.ads().list(profileId=profile_id, active=True)

while True:
 
# Execute request and print response.
  response
= request.execute()

 
for ad in response['ads']:
   
print 'Found ad with ID %s and name "%s".' % (ad['id'], ad['name'])

 
if response['ads'] and response['nextPageToken']:
    request
= service.ads().list_next(request, response)
 
else:
   
break
token = nil
loop
do
  result
= service.list_ads(profile_id,
    page_token
: token,
    fields
: 'nextPageToken,ads(id,name)')

 
# Display results.
 
if result.ads.any?
    result
.ads.each do |ad|
      puts format
('Found ad with ID %d and name "%s".', ad.id, ad.name)
   
end

    token
= result.next_page_token
 
else
   
# Stop paging if there are no more results.
    token
= nil
 
end

 
break if token.to_s.empty?
end

Создание тегов прожектора

Теги Floodlight – это HTML-теги, встроенные в страницу, которые используются для отслеживания действий пользователя (например, покупок) на сайте. Для создания тегов Floodlight вам понадобится FloodlightActivity , принадлежащий FloodlightActivityGroup :

  1. Создайте новую группу действий Floodlight, передав значения name , type и floodlightConfigurationId .
    // Create the floodlight activity group.
    FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup();
    floodlightActivityGroup
    .Name = groupName;
    floodlightActivityGroup
    .FloodlightConfigurationId = floodlightConfigurationId;
    floodlightActivityGroup
    .Type = "COUNTER";
  2. Сохраните группу действий Floodlight, вызвав метод floodlightActivityGroups.insert() , который вернет идентификатор новой группы.
    // Insert the activity group.
    FloodlightActivityGroup result =
        service
    .FloodlightActivityGroups.Insert(floodlightActivityGroup, profileId).Execute();
  3. Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
    // Set floodlight activity structure.
    FloodlightActivity activity = new FloodlightActivity();
    activity
    .CountingMethod = "STANDARD_COUNTING";
    activity
    .Name = activityName;
    activity
    .FloodlightActivityGroupId = activityGroupId;
    activity
    .FloodlightTagType = "GLOBAL_SITE_TAG";
    activity
    .ExpectedUrl = url;
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    // Create the floodlight tag activity.
    FloodlightActivity result =
        service
    .FloodlightActivities.Insert(activity, profileId).Execute();
  5. Создайте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашего нового действия. Отправьте теги веб-мастеру на сайте рекламодателя.
    // Generate the floodlight activity tag.
    FloodlightActivitiesResource.GeneratetagRequest request =
        service
    .FloodlightActivities.Generatetag(profileId);
    request
    .FloodlightActivityId = activityId;

    FloodlightActivitiesGenerateTagResponse response = request.Execute();
  1. Создайте новую группу действий Floodlight, передав значения name , type и floodlightConfigurationId .
    // Create the floodlight activity group.
    FloodlightActivityGroup floodlightActivityGroup = new FloodlightActivityGroup();
    floodlightActivityGroup
    .setName(groupName);
    floodlightActivityGroup
    .setFloodlightConfigurationId(floodlightConfigurationId);
    floodlightActivityGroup
    .setType("COUNTER");
  2. Сохраните группу действий Floodlight, вызвав метод floodlightActivityGroups.insert() , который вернет идентификатор новой группы.
    // Insert the activity group.
    FloodlightActivityGroup result =
        reporting
    .floodlightActivityGroups().insert(profileId, floodlightActivityGroup).execute();
  3. Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
    // Set floodlight activity structure.
    FloodlightActivity activity = new FloodlightActivity();
    activity
    .setName(activityName);
    activity
    .setCountingMethod("STANDARD_COUNTING");
    activity
    .setExpectedUrl(url);
    activity
    .setFloodlightActivityGroupId(activityGroupId);
    activity
    .setFloodlightTagType("GLOBAL_SITE_TAG");
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    // Create the floodlight tag activity.
    FloodlightActivity result =
        reporting
    .floodlightActivities().insert(profileId, activity).execute();
  5. Создайте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашего нового действия. Отправьте теги веб-мастеру на сайте рекламодателя.
    // Generate the floodlight activity tag.
    Generatetag request = reporting.floodlightActivities().generatetag(profileId);
    request
    .setFloodlightActivityId(activityId);

    FloodlightActivitiesGenerateTagResponse response = request.execute();
  1. Создайте новую группу действий Floodlight, передав значения name , type и floodlightConfigurationId .
    $group = new Google_Service_Dfareporting_FloodlightActivityGroup();
    $group
    ->setFloodlightConfigurationId($values['configuration_id']);
    $group
    ->setName($values['group_name']);
    $group
    ->setType('COUNTER');
  2. Сохраните группу действий Floodlight, вызвав метод floodlightActivityGroups.insert() , который вернет идентификатор новой группы.
    $result = $this->service->floodlightActivityGroups->insert(
        $values
    ['user_profile_id'],
        $group
    );
  3. Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
    $activity = new Google_Service_Dfareporting_FloodlightActivity();
    $activity
    ->setCountingMethod('STANDARD_COUNTING');
    $activity
    ->setExpectedUrl($values['url']);
    $activity
    ->setFloodlightActivityGroupId($values['activity_group_id']);
    $activity
    ->setFloodlightTagType('GLOBAL_SITE_TAG');
    $activity
    ->setName($values['activity_name']);
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    $result = $this->service->floodlightActivities->insert(
        $values
    ['user_profile_id'],
        $activity
    );
  5. Создайте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашего нового действия. Отправьте теги веб-мастеру на сайте рекламодателя.
    $result = $this->service->floodlightActivities->generatetag(
        $values
    ['user_profile_id'],
       
    ['floodlightActivityId' => $values['activity_id']]
    );
  1. Создайте новую группу действий Floodlight, передав значения name , type и floodlightConfigurationId .
    # Construct and save floodlight activity group.
    activity_group
    = {
       
    'name': 'Test Floodlight Activity Group',
       
    'floodlightConfigurationId': floodlight_config_id,
       
    'type': 'COUNTER'
    }
  2. Сохраните группу действий Floodlight, вызвав метод floodlightActivityGroups.insert() , который вернет идентификатор новой группы.
    request = service.floodlightActivityGroups().insert(
        profileId
    =profile_id, body=activity_group)
  3. Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
    # Construct and save floodlight activity.
    floodlight_activity
    = {
       
    'countingMethod': 'STANDARD_COUNTING',
       
    'expectedUrl': 'http://www.google.com',
       
    'floodlightActivityGroupId': activity_group_id,
       
    'floodlightTagType': 'GLOBAL_SITE_TAG',
       
    'name': 'Test Floodlight Activity'
    }
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    request = service.floodlightActivities().insert(
        profileId
    =profile_id, body=floodlight_activity)
  5. Создайте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашего нового действия. Отправьте теги веб-мастеру на сайте рекламодателя.
    # Construct the request.
    request
    = service.floodlightActivities().generatetag(
        profileId
    =profile_id, floodlightActivityId=activity_id)

    # Execute request and print response.
    response
    = request.execute()
  1. Создайте новую группу действий Floodlight, передав значения name , type и floodlightConfigurationId .
    # Create a new floodlight activity group resource to insert.
    activity_group
    =
     
    DfareportingUtils::API_NAMESPACE::FloodlightActivityGroup.new(
        floodlight_configuration_id
    : floodlight_config_id,
        name
    :
          format
    ('Example Floodlight Activity Group #%s', SecureRandom.hex(3)),
        type
    : 'COUNTER'
     
    )
  2. Сохраните группу действий Floodlight, вызвав метод floodlightActivityGroups.insert() , который вернет идентификатор новой группы.
    # Insert the floodlight activity group.
    result
    = service.insert_floodlight_activity_group(profile_id, activity_group)
  3. Создайте новое действие Floodlight и присвойте ему идентификатор только что созданной группы действий Floodlight, а также все другие обязательные поля.
    # Create a new floodlight activity resource to insert.
    activity
    = DfareportingUtils::API_NAMESPACE::FloodlightActivity.new(
      counting_method
    : 'STANDARD_COUNTING',
      expected_url
    : 'http://www.google.com',
      floodlight_activity_group_id
    : activity_group_id,
      floodlight_tag_type
    : 'GLOBAL_SITE_TAG',
      name
    : format('Example Floodlight Activity #%s', SecureRandom.hex(3))
    )
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    # Insert the floodlight activity.
    result
    = service.insert_floodlight_activity(profile_id, activity)
  5. Создайте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашего нового действия. Отправьте теги веб-мастеру на сайте рекламодателя.
    # Construct the request.
    result
    = service.generatetag_floodlight_activity(profile_id,
      floodlight_activity_id
    : activity_id)

Создать теги мест размещения

Последний шаг — создание HTML-тегов для отправки издателю для показа ваших объявлений. Чтобы сгенерировать теги через API, сделайте запрос к placements.generatetags() , указав набор placementIds и tagFormats .

// Generate the placement activity tags.
PlacementsResource.GeneratetagsRequest request =
    service
.Placements.Generatetags(profileId);
request
.CampaignId = campaignId;
request
.TagFormats =
   
PlacementsResource.GeneratetagsRequest.TagFormatsEnum.PLACEMENTTAGIFRAMEJAVASCRIPT;
request
.PlacementIds = placementId.ToString();

PlacementsGenerateTagsResponse response = request.Execute();
// Generate the placement activity tags.
Generatetags request = reporting.placements().generatetags(profileId);
request
.setCampaignId(campaignId);
request
.setTagFormats(tagFormats);
request
.setPlacementIds(ImmutableList.of(placementId));

PlacementsGenerateTagsResponse response = request.execute();
$placementTags = $this->service->placements->generatetags(
    $values
['user_profile_id'],
   
['campaignId' => $values['campaign_id'],
     
'placementIds' => [$values['placement_id']],
     
'tagFormats' => ['PLACEMENT_TAG_STANDARD',
                     
'PLACEMENT_TAG_IFRAME_JAVASCRIPT',
                     
'PLACEMENT_TAG_INTERNAL_REDIRECT']
   
]
);
# Construct the request.
request
= service.placements().generatetags(
    profileId
=profile_id, campaignId=campaign_id,
    placementIds
=[placement_id])

# Execute request and print response.
response
= request.execute()
# Construct the request.
result
= service.generate_placement_tags(profile_id,
  campaign_id
: campaign_id,
  placement_ids
: [placement_id])