/// <summary>
        /// Run the code examples.
        /// </summary>
        /// <param name="user">The DFP user object running the code examples.</param>
        public override void Run(DfpUser user)
        {
            // Get the ProductTemplateService.
              ProductTemplateService productTemplateService =
              (ProductTemplateService) user.GetService(DfpService.v201411.ProductTemplateService);

              // Get the NetworkService.
              NetworkService networkService =
              (NetworkService) user.GetService(DfpService.v201411.NetworkService);

              // Create a product template.
              ProductTemplate productTemplate = new ProductTemplate();
              productTemplate.name = "Product template #" + new Random().Next(int.MaxValue);
              productTemplate.description = "This product template creates standard proposal line items "
              + "targeting Chrome browsers with product segmentation on ad units and geo targeting.";

              // Set the name macro which will be used to generate the names of the products.
              // This will create a segmentation based on the line item type, ad unit, and location.
              productTemplate.nameMacro = "<line-item-type> - <ad-unit> - <template-name> - <location>";

              // Set the product type so the created proposal line items will be trafficked in DFP.
              productTemplate.productType = ProductType.DFP;

              // Set rate type to create CPM priced proposal line items.
              productTemplate.rateType = RateType.CPM;

              // Optionally set the creative rotation of the product to serve one or more creatives.
              productTemplate.roadblockingType = RoadblockingType.ONE_OR_MORE;

              // Create the master creative placeholder.
              CreativePlaceholder creativeMasterPlaceholder = new CreativePlaceholder();
              creativeMasterPlaceholder.size =
              new Size() {width = 728, height = 90, isAspectRatio = false};

              // Create companion creative placeholders.
              CreativePlaceholder companionCreativePlaceholder = new CreativePlaceholder();
              companionCreativePlaceholder.size =
              new Size() {width = 300, height = 250, isAspectRatio = false};

              // Set the size of creatives that can be associated with the product template.
              productTemplate.creativePlaceholders =
              new CreativePlaceholder[] {creativeMasterPlaceholder, companionCreativePlaceholder};

              // Set the type of proposal line item to be created from the product template.
              productTemplate.lineItemType = LineItemType.STANDARD;

              // Get the root ad unit ID used to target the whole site.
              String rootAdUnitId = networkService.getCurrentNetwork().effectiveRootAdUnitId;

              // Create ad unit targeting for the root ad unit (i.e. the whole network).
              AdUnitTargeting adUnitTargeting = new AdUnitTargeting();
              adUnitTargeting.adUnitId = rootAdUnitId;
              adUnitTargeting.includeDescendants = true;

              // Create geo targeting for the US.
              Location countryLocation = new Location();
              countryLocation.id = 2840L;

              // Create geo targeting for Hong Kong.
              Location regionLocation = new Location();
              regionLocation.id = 2344L;

              GeoTargeting geoTargeting = new GeoTargeting();
              geoTargeting.targetedLocations = new Location[] {countryLocation, regionLocation};

              // Add browser targeting to Chrome on the product template distinct from product
              // segmentation.
              Browser chromeBrowser = new Browser();
              chromeBrowser.id = 500072L;

              BrowserTargeting browserTargeting = new BrowserTargeting();
              browserTargeting.browsers = new Browser[] {chromeBrowser};

              ProductTemplateTargeting productTemplateTargeting = new ProductTemplateTargeting();
              productTemplateTargeting.browserTargeting = browserTargeting;

              productTemplate.targeting = productTemplateTargeting;

              // Add inventory and geo targeting as product segmentation.
              ProductSegmentation productSegmentation = new ProductSegmentation();
              productSegmentation.adUnitSegments = new AdUnitTargeting[] {adUnitTargeting};
              productSegmentation.geoSegment = geoTargeting;

              productTemplate.productSegmentation = productSegmentation;

              try {
            // Create the product template on the server.
            ProductTemplate[] productTemplates = productTemplateService.createProductTemplates(
            new ProductTemplate[] {productTemplate});

            foreach (ProductTemplate createdProductTemplate in productTemplates) {
              Console.WriteLine("A product template with ID \"{0}\" and name \"{1}\" was created.",
              createdProductTemplate.id, createdProductTemplate.name);
            }

              } catch (Exception e) {
            Console.WriteLine("Failed to create product templates. Exception says \"{0}\"",
            e.Message);
              }
        }
Esempio n. 2
0
    public LineItem CreateLineItem(DfpUser user, long orderId, string adUnitId) {
      LineItemService lineItemService =
          (LineItemService) user.GetService(DfpService.v201411.LineItemService);

      long placementId = CreatePlacement(user, new string[] {adUnitId}).id;

      // Create inventory targeting.
      InventoryTargeting inventoryTargeting = new InventoryTargeting();
      inventoryTargeting.targetedPlacementIds = new long[] {placementId};

      // Create geographical targeting.
      GeoTargeting geoTargeting = new GeoTargeting();

      // Include the US and Quebec, Canada.
      Location countryLocation = new Location();
      countryLocation.id = 2840L;

      Location regionLocation = new Location();
      regionLocation.id = 20123L;
      geoTargeting.targetedLocations = new Location[] {countryLocation, regionLocation};

      // Exclude Chicago and the New York metro area.
      Location cityLocation = new Location();
      cityLocation.id = 1016367L;

      Location metroLocation = new Location();
      metroLocation.id = 200501L;
      geoTargeting.excludedLocations = new Location[] {cityLocation, metroLocation};

      // Exclude domains that are not under the network's control.
      UserDomainTargeting userDomainTargeting = new UserDomainTargeting();
      userDomainTargeting.domains = new String[] {"usa.gov"};
      userDomainTargeting.targeted = false;

      // Create day-part targeting.
      DayPartTargeting dayPartTargeting = new DayPartTargeting();
      dayPartTargeting.timeZone = DeliveryTimeZone.BROWSER;

      // Target only the weekend in the browser's timezone.
      DayPart saturdayDayPart = new DayPart();
      saturdayDayPart.dayOfWeek = Google.Api.Ads.Dfp.v201411.DayOfWeek.SATURDAY;

      saturdayDayPart.startTime = new TimeOfDay();
      saturdayDayPart.startTime.hour = 0;
      saturdayDayPart.startTime.minute = MinuteOfHour.ZERO;

      saturdayDayPart.endTime = new TimeOfDay();
      saturdayDayPart.endTime.hour = 24;
      saturdayDayPart.endTime.minute = MinuteOfHour.ZERO;

      DayPart sundayDayPart = new DayPart();
      sundayDayPart.dayOfWeek = Google.Api.Ads.Dfp.v201411.DayOfWeek.SUNDAY;

      sundayDayPart.startTime = new TimeOfDay();
      sundayDayPart.startTime.hour = 0;
      sundayDayPart.startTime.minute = MinuteOfHour.ZERO;

      sundayDayPart.endTime = new TimeOfDay();
      sundayDayPart.endTime.hour = 24;
      sundayDayPart.endTime.minute = MinuteOfHour.ZERO;

      dayPartTargeting.dayParts = new DayPart[] {saturdayDayPart, sundayDayPart};


      // Create technology targeting.
      TechnologyTargeting technologyTargeting = new TechnologyTargeting();

      // Create browser targeting.
      BrowserTargeting browserTargeting = new BrowserTargeting();
      browserTargeting.isTargeted = true;

      // Target just the Chrome browser.
      Technology browserTechnology = new Technology();
      browserTechnology.id = 500072L;
      browserTargeting.browsers = new Technology[] {browserTechnology};
      technologyTargeting.browserTargeting = browserTargeting;

      LineItem lineItem = new LineItem();
      lineItem.name = "Line item #" + new TestUtils().GetTimeStamp();
      lineItem.orderId = orderId;
      lineItem.targeting = new Targeting();

      lineItem.targeting.inventoryTargeting = inventoryTargeting;
      lineItem.targeting.geoTargeting = geoTargeting;
      lineItem.targeting.userDomainTargeting = userDomainTargeting;
      lineItem.targeting.dayPartTargeting = dayPartTargeting;
      lineItem.targeting.technologyTargeting = technologyTargeting;

      lineItem.lineItemType = LineItemType.STANDARD;
      lineItem.allowOverbook = true;

      // Set the creative rotation type to even.
      lineItem.creativeRotationType = CreativeRotationType.EVEN;

      // Set the size of creatives that can be associated with this line item.
      Size size = new Size();
      size.width = 300;
      size.height = 250;
      size.isAspectRatio = false;

      // Create the creative placeholder.
      CreativePlaceholder creativePlaceholder = new CreativePlaceholder();
      creativePlaceholder.size = size;

      lineItem.creativePlaceholders = new CreativePlaceholder[] {creativePlaceholder};

      // Set the length of the line item to run.
      //lineItem.startDateTimeType = StartDateTimeType.IMMEDIATELY;
      lineItem.startDateTimeType = StartDateTimeType.IMMEDIATELY;
      lineItem.endDateTime = DateTimeUtilities.FromDateTime(System.DateTime.Today.AddMonths(1));

      // Set the cost per unit to $2.
      lineItem.costType = CostType.CPM;
      lineItem.costPerUnit = new Money();
      lineItem.costPerUnit.currencyCode = "USD";
      lineItem.costPerUnit.microAmount = 2000000L;

      // Set the number of units bought to 500,000 so that the budget is
      // $1,000.
      Goal goal = new Goal();
      goal.units = 500000L;
      goal.unitType = UnitType.IMPRESSIONS;
      lineItem.primaryGoal = goal;

      return lineItemService.createLineItems(new LineItem[] {lineItem})[0];
    }
        /// <summary>
        /// Run the code examples.
        /// </summary>
        /// <param name="user">The DFP user object running the code examples.</param>
        public override void Run(DfpUser user)
        {
            // Get the LineItemService.
              LineItemService lineItemService =
              (LineItemService) user.GetService(DfpService.v201411.LineItemService);

              // Set the order that all created line items will belong to and the
              // placement ID to target.
              long orderId = long.Parse(_T("INSERT_ORDER_ID_HERE"));
              long[] targetPlacementIds = new long[] {long.Parse(_T("INSERT_PLACEMENT_ID_HERE"))};

              // Create inventory targeting.
              InventoryTargeting inventoryTargeting = new InventoryTargeting();
              inventoryTargeting.targetedPlacementIds = targetPlacementIds;

              // Create geographical targeting.
              GeoTargeting geoTargeting = new GeoTargeting();

              // Include the US and Quebec, Canada.
              Location countryLocation = new Location();
              countryLocation.id = 2840L;

              Location regionLocation = new Location();
              regionLocation.id = 20123L;
              geoTargeting.targetedLocations = new Location[] {countryLocation, regionLocation};

              Location postalCodeLocation = new Location();
              postalCodeLocation.id = 9000093;

              // Exclude Chicago and the New York metro area.
              Location cityLocation = new Location();
              cityLocation.id = 1016367L;

              Location metroLocation = new Location();
              metroLocation.id = 200501L;
              geoTargeting.excludedLocations = new Location[] {cityLocation, metroLocation};

              // Exclude domains that are not under the network's control.
              UserDomainTargeting userDomainTargeting = new UserDomainTargeting();
              userDomainTargeting.domains = new String[] {"usa.gov"};
              userDomainTargeting.targeted = false;

              // Create day-part targeting.
              DayPartTargeting dayPartTargeting = new DayPartTargeting();
              dayPartTargeting.timeZone = DeliveryTimeZone.BROWSER;

              // Target only the weekend in the browser's timezone.
              DayPart saturdayDayPart = new DayPart();
              saturdayDayPart.dayOfWeek = Google.Api.Ads.Dfp.v201411.DayOfWeek.SATURDAY;

              saturdayDayPart.startTime = new TimeOfDay();
              saturdayDayPart.startTime.hour = 0;
              saturdayDayPart.startTime.minute = MinuteOfHour.ZERO;

              saturdayDayPart.endTime = new TimeOfDay();
              saturdayDayPart.endTime.hour = 24;
              saturdayDayPart.endTime.minute = MinuteOfHour.ZERO;

              DayPart sundayDayPart = new DayPart();
              sundayDayPart.dayOfWeek = Google.Api.Ads.Dfp.v201411.DayOfWeek.SUNDAY;

              sundayDayPart.startTime = new TimeOfDay();
              sundayDayPart.startTime.hour = 0;
              sundayDayPart.startTime.minute = MinuteOfHour.ZERO;

              sundayDayPart.endTime = new TimeOfDay();
              sundayDayPart.endTime.hour = 24;
              sundayDayPart.endTime.minute = MinuteOfHour.ZERO;

              dayPartTargeting.dayParts = new DayPart[] {saturdayDayPart, sundayDayPart};

              // Create technology targeting.
              TechnologyTargeting technologyTargeting = new TechnologyTargeting();

              // Create browser targeting.
              BrowserTargeting browserTargeting = new BrowserTargeting();
              browserTargeting.isTargeted = true;

              // Target just the Chrome browser.
              Technology browserTechnology = new Technology();
              browserTechnology.id = 500072L;
              browserTargeting.browsers = new Technology[] {browserTechnology};
              technologyTargeting.browserTargeting = browserTargeting;

              // Create an array to store local line item objects.
              LineItem[] lineItems = new LineItem[5];

              for (int i = 0; i < 5; i++) {
            LineItem lineItem = new LineItem();
            lineItem.name = "Line item #" + i;
            lineItem.orderId = orderId;
            lineItem.targeting = new Targeting();

            lineItem.targeting.inventoryTargeting = inventoryTargeting;
            lineItem.targeting.geoTargeting = geoTargeting;
            lineItem.targeting.userDomainTargeting = userDomainTargeting;
            lineItem.targeting.dayPartTargeting = dayPartTargeting;
            lineItem.targeting.technologyTargeting = technologyTargeting;

            lineItem.lineItemType = LineItemType.STANDARD;
            lineItem.allowOverbook = true;

            // Set the creative rotation type to even.
            lineItem.creativeRotationType = CreativeRotationType.EVEN;

            // Set the size of creatives that can be associated with this line item.
            Size size = new Size();
            size.width = 300;
            size.height = 250;
            size.isAspectRatio = false;

            // Create the creative placeholder.
            CreativePlaceholder creativePlaceholder = new CreativePlaceholder();
            creativePlaceholder.size = size;

            lineItem.creativePlaceholders = new CreativePlaceholder[] {creativePlaceholder};

            // Set the length of the line item to run.
            //lineItem.startDateTimeType = StartDateTimeType.IMMEDIATELY;
            lineItem.startDateTimeType = StartDateTimeType.IMMEDIATELY;
            lineItem.endDateTime = DateTimeUtilities.FromDateTime(System.DateTime.Today.AddMonths(1));

            // Set the cost per unit to $2.
            lineItem.costType = CostType.CPM;
            lineItem.costPerUnit = new Money();
            lineItem.costPerUnit.currencyCode = "USD";
            lineItem.costPerUnit.microAmount = 2000000L;

            // Set the number of units bought to 500,000 so that the budget is
            // $1,000.
            Goal goal = new Goal();
            goal.goalType = GoalType.LIFETIME;
            goal.unitType = UnitType.IMPRESSIONS;
            goal.units = 500000L;
            lineItem.primaryGoal = goal;

            lineItems[i] = lineItem;
              }

              try {
            // Create the line items on the server.
            lineItems = lineItemService.createLineItems(lineItems);

            if (lineItems != null) {
              foreach (LineItem lineItem in lineItems) {
            Console.WriteLine("A line item with ID \"{0}\", belonging to order ID \"{1}\", and" +
                " named \"{2}\" was created.", lineItem.id, lineItem.orderId, lineItem.name);
              }
            } else {
              Console.WriteLine("No line items created.");
            }
              } catch (Exception e) {
            Console.WriteLine("Failed to create line items. Exception says \"{0}\"",
            e.Message);
              }
        }