Распространенные задачи по борьбе с торговлей людьми

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

Общие советы по программированию

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

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

C#

  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();

Java

  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();

PHP

  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
    );

Python

  1. Создайте объект Advertiser и задайте для него необходимые свойства «имя» и «статус» .
    # Construct and save advertiser.
    advertiser = {
        'name': 'Test Advertiser',
        'status': 'APPROVED'
    }
  2. Вызовите advertisers.insert() для сохранения рекламодателя.
    request = service.advertisers().insert(
        profileId=str(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)

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

C#

  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));
    
    campaign.EuPoliticalAdsDeclaration = "CONTAINS_EU_POLITICAL_ADS";
  2. Для сохранения кампании вызовите метод campaigns.insert() .

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

Java

  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());
    campaign.setEuPoliticalAdsDeclaration("CONTAINS_EU_POLITICAL_ADS");
    
    // 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();

PHP

  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->setEuPoliticalAdsDeclaration($values['eu_political_ads_declaration']);
    $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
    );

Python

  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': '2025-11-01',
        'endDate': '2025-12-01',
        'euPoliticalAdsDeclaration': 'CONTAINS_EU_POLITICAL_ADS',
    }
  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: '2025-11-01',
      end_date: '2025-12-01',
      eu_political_ads_declaration: 'CONTAINS_EU_POLITICAL_ADS'
    )
  2. Для сохранения кампании вызовите метод campaigns.insert() .

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

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

C#

  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() . Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    Placement result = service.Placements.Insert(placement, profileId).Execute();

Java

  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() . Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    Placement result = reporting.placements().insert(profileId, placement).execute();

PHP

  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() . Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.
    // Insert the placement.
    $result = $this->service->placements->insert(
        $values['user_profile_id'],
        $placement
    );

Python

  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() . Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.
    request = service.placements().insert(
        profileId=str(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() . Обязательно сохраните возвращенный ID, если хотите использовать его для назначения объявлению или креативу.
    # Insert the placement strategy.
    result = service.insert_placement(profile_id, placement)

Загрузка ресурсов

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

C#

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

    • The name property, which will be the name of the asset on the server. The name must include an extension that indicates the file type such as .png, or .gif, and will be exposed to the browser as the asset name, but it does not have to be the same as the original file name. Note that this name might be changed by Campaign Manager 360 to make it unique on the server; check the return value to see if it has been changed.
    • Свойство 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;
    }

Java

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

    • Свойство name будет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено.
    • Свойство type определяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
    // Create the creative asset ID and Metadata.
    CreativeAssetId assetId = new CreativeAssetId();
    assetId.setName(assetName);
    assetId.setType(assetType);
  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();

PHP

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

    • Свойство name будет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 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']
    );

Python

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

    • Свойство name будет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 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=str(advertiser_id),
            profileId=str(profile_id),
            media_body=media,
            body=creative_asset,
        )
        .execute()
    )

Руби

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

    • Свойство name будет представлять собой имя ресурса на сервере. Имя должно включать расширение, указывающее на тип файла, например, `.png` или `.gif`, и будет отображаться в браузере как имя ресурса, но оно не обязательно должно совпадать с исходным именем файла. Обратите внимание, что Campaign Manager 360 может изменить это имя, чтобы сделать его уникальным на сервере; проверьте возвращаемое значение, чтобы узнать, было ли оно изменено.
    • Свойство type определяет тип актива. Это свойство будет определять типы креативов, с которыми может быть связан данный актив.
    # Construct the creative asset metadata
    creative_asset = DfareportingUtils::API_NAMESPACE::CreativeAsset.new(
      asset_identifier: DfareportingUtils::API_NAMESPACE::CreativeAssetId.new(
        name: asset_name,
        type: asset_type
      )
    )
  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.

C#

  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();

Java

  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();

PHP

  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
    );

Python

  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. Save the creative. Do this by calling creatives.insert() . It is required to specify an advertiser ID with which to associate this creative.
    request = service.creatives().insert(
        profileId=str(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=str(profile_id), campaignId=str(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 явно или неявно.

Явно

C#

  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();

Java

  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();

PHP

  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);

Python

  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=str(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. Save the ad by calling ads.insert() .
    result = service.insert_ad(profile_id, ad)

Неявно

C#

  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();

Java

  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();

PHP

  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
    );

Python

  1. Создать и сохранить Placement .
  2. Создайте и сохраните Creative .
  3. Свяжите Creative с той же Campaign , что и Placement , вызвав метод campaignCreativeAssociations.insert() (см. шаг 4 в разделе «Создание креатива» ). Это создаст объявление по умолчанию, связанное как с креативом, так и с размещением.
    # Construct the request.
    association = {
        'creativeId': creative_id
    }
    
    request = service.campaignCreativeAssociations().insert(
        profileId=str(profile_id), campaignId=str(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 возвращаемый в ответе:

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=str(profile_id), active=True)

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

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

  if response['ads'] and response['nextPageToken']:
    request = service.ads().list_next(request, response)
  else:
    break

Руби

token = nil
loop do
  result = service.list_ads(profile_id,
    page_token: token,
    fields: 'nextPageToken,ads(id,name)')

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

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

  break if token.to_s.empty?
end

Сгенерировать метки для прожекторов

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

C#

  1. Создайте новую группу действий для подсветки, передав значения для параметров 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. Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
    // 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;
    activity.ConversionCategory = "CONVERSION_CATEGORY_PAGE_VIEW";
  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();

Java

  1. Создайте новую группу действий для подсветки, передав значения для параметров 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. Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
    // 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();

PHP

  1. Создайте новую группу действий для подсветки, передав значения для параметров 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. Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
    $activity = new Google_Service_Dfareporting_FloodlightActivity();
    $activity->setCountingMethod('STANDARD_COUNTING');
    $activity->setExpectedUrl($values['url']);
    $activity->setConversionCategory($values['conversion_category']);
    $activity->setFloodlightActivityGroupId($values['activity_group_id']);
    $activity->setFloodlightTagType('GLOBAL_SITE_TAG');
    $activity->setName($values['activity_name']);
  4. Save the new activity by calling floodlightActivities.insert() , which will return the ID of the new activity.
    $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']]
    );

Python

  1. Создайте новую группу действий для подсветки, передав значения для параметров 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=str(profile_id), body=activity_group
    )
  3. Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
    # 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',
        'conversionCategory': 'CONVERSION_CATEGORY_PAGE_VIEW',
    }
  4. Сохраните новое действие, вызвав метод floodlightActivities.insert() , который вернет идентификатор нового действия.
    request = service.floodlightActivities().insert(
        profileId=str(profile_id), body=floodlight_activity
    )
  5. Сгенерируйте теги, вызвав метод floodlightActivities.generatetag() с идентификатором floodlightActivityId вашей новой активности. Отправьте теги веб-мастеру на сайте рекламодателя.
    # Construct the request.
    request = service.floodlightActivities().generatetag(
        profileId=str(profile_id), floodlightActivityId=str(activity_id)
    )
    
    # Execute request and print response.
    response = request.execute()

Руби

  1. Создайте новую группу действий для подсветки, передав значения для параметров 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. Создайте новое действие «Подсветка» и присвойте ему идентификатор только что созданной группы действий «Подсветка», а также все остальные необходимые поля.
    # 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)),
      conversion_category: 'CONVERSION_CATEGORY_PAGE_VIEW'
    )
  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 .

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=str(profile_id),
    campaignId=str(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])