/// <summary>
        /// Gets the total landscape points in the ad group bid landscape page. If the page has a null
        /// <code>entries</code> array, returns <code>0</code>.
        /// </summary>
        /// <param name="page">The ad group bid landscape page.</param>
        /// <returns>The total landscape points.</returns>
        private int GetTotalLandscapePointsInPage(AdGroupBidLandscapePage page)
        {
            if (page.entries == null)
            {
                return(0);
            }
            int totalLandscapePointsInPage = 0;

            foreach (AdGroupBidLandscape adGroupBidLandscape in page.entries)
            {
                totalLandscapePointsInPage += adGroupBidLandscape.landscapePoints.Length;
            }
            return(totalLandscapePointsInPage);
        }
Пример #2
0
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="adGroupId">Id of the ad group for which bid simulations are
        /// retrieved.</param>
        public void Run(AdWordsUser user, long adGroupId)
        {
            using (DataService dataService = (DataService)user.GetService(
                       AdWordsService.v201708.DataService)) {
                // Create the selector.
                Selector selector = new Selector()
                {
                    fields = new string[] {
                        AdGroupBidLandscape.Fields.AdGroupId, AdGroupBidLandscape.Fields.LandscapeType,
                        AdGroupBidLandscape.Fields.LandscapeCurrent, AdGroupBidLandscape.Fields.StartDate,
                        AdGroupBidLandscape.Fields.EndDate, BidLandscapeLandscapePoint.Fields.Bid,
                        BidLandscapeLandscapePoint.Fields.LocalClicks,
                        BidLandscapeLandscapePoint.Fields.LocalCost,
                        BidLandscapeLandscapePoint.Fields.LocalImpressions
                    },
                    predicates = new Predicate[] {
                        Predicate.Equals(AdGroupBidLandscape.Fields.AdGroupId, adGroupId)
                    }
                };

                try {
                    // Get bid landscape for ad group.
                    AdGroupBidLandscapePage page = dataService.getAdGroupBidLandscape(selector);
                    if (page != null && page.entries != null && page.entries.Length > 0)
                    {
                        foreach (AdGroupBidLandscape bidLandscape in page.entries)
                        {
                            Console.WriteLine("Found ad group bid landscape with ad group id '{0}', " +
                                              "type '{1}', current: '{2}', start date '{3}', end date '{4}', and " +
                                              "landscape points",
                                              bidLandscape.adGroupId, bidLandscape.type, bidLandscape.landscapeCurrent,
                                              bidLandscape.startDate, bidLandscape.endDate);
                            foreach (BidLandscapeLandscapePoint point in bidLandscape.landscapePoints)
                            {
                                Console.WriteLine("- bid: {0} => clicks: {1}, cost: {2}, impressions: {3}",
                                                  point.bid.microAmount, point.clicks, point.cost.microAmount,
                                                  point.impressions);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("No ad group bid landscapes were found.");
                    }
                } catch (Exception e) {
                    throw new System.ApplicationException("Failed to get ad group bid landscapes.", e);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Runs the specified user.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="adGroupId">Id of the ad group for which bid simulations are
        /// retrieved.</param>
        public void Run(AdWordsUser user, long adGroupId)
        {
            // Get the DataService.
            DataService dataService = (DataService)user.GetService(AdWordsService.v201409.DataService);

            // Create the selector.
            Selector selector = new Selector();

            selector.fields = new string[] { "AdGroupId", "LandscapeType", "LandscapeCurrent", "StartDate",
                                             "EndDate", "Bid", "LocalClicks", "LocalCost", "MarginalCpc", "LocalImpressions" };

            // Set the filters.
            Predicate adGroupPredicate = new Predicate();

            adGroupPredicate.field     = "AdGroupId";
            adGroupPredicate.@operator = PredicateOperator.IN;
            adGroupPredicate.values    = new string[] { adGroupId.ToString() };

            selector.predicates = new Predicate[] { adGroupPredicate };

            try {
                // Get bid landscape for ad group.
                AdGroupBidLandscapePage page = dataService.getAdGroupBidLandscape(selector);
                if (page != null && page.entries != null && page.entries.Length > 0)
                {
                    foreach (AdGroupBidLandscape bidLandscape in page.entries)
                    {
                        Console.WriteLine("Found ad group bid landscape with ad group id '{0}', type '{1}', " +
                                          "current: '{2}', start date '{3}', end date '{4}', and landscape points",
                                          bidLandscape.adGroupId, bidLandscape.type, bidLandscape.landscapeCurrent,
                                          bidLandscape.startDate, bidLandscape.endDate);
                        foreach (BidLandscapeLandscapePoint point in bidLandscape.landscapePoints)
                        {
                            Console.WriteLine("- bid: {0} => clicks: {1}, cost: {2}, marginalCpc: {3}, " +
                                              "impressions: {4}", point.bid.microAmount, point.bid.microAmount,
                                              point.clicks, point.cost.microAmount, point.marginalCpc.microAmount,
                                              point.impressions);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No ad group bid landscapes were found.");
                }
            } catch (Exception ex) {
                throw new System.ApplicationException("Failed to get ad group bid landscapes.", ex);
            }
        }
        public void TestHasNextPage()
        {
            SelectQueryBuilder queryBuilder = null;
            SelectQuery        query        = null;

            queryBuilder = new SelectQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignId", "Status", "Clicks", "Impressions")
                           .Where("Clicks").Equals(20)
                           .OrderByAscending("CampaignId")
                           .OrderByDescending("Status")
                           .Build();

            // Tests for regular pages.
            CampaignPage campaignPage = new CampaignPage();

            // Start index is less than total number of entries.
            query.Limit(1, 20);
            campaignPage.totalNumEntries = 15;
            Assert.IsTrue(query.HasNextPage(campaignPage));

            // Start index is greater than total number of entries.
            query.Limit(18, 20);
            campaignPage.totalNumEntries = 15;
            Assert.IsFalse(query.HasNextPage(campaignPage));

            // Tests for AdGroupBidLandscapePage.
            AdGroupBidLandscapePage adGroupBidLandscapePage = new AdGroupBidLandscapePage();

            adGroupBidLandscapePage.entries = new AdGroupBidLandscape[] {
                new AdGroupBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 10,
                            impressions = 200
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 12,
                            impressions = 232
                        },
                    }
                },
                new AdGroupBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = new BidLandscapeLandscapePoint[] {
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 10,
                            impressions = 200
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 5,
                            impressions = 232
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 66,
                            impressions = 550
                        },
                    }
                }
            };

            // Start index is less than total number of landscape points (5).
            query.Limit(1, 20);
            Assert.IsTrue(query.HasNextPage(adGroupBidLandscapePage));

            adGroupBidLandscapePage.entries = new AdGroupBidLandscape[] {
                new AdGroupBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {}
                },
                new AdGroupBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = null
                }
            };

            // Start index is less than total number of landscape points (0).
            query.Limit(1, 20);
            Assert.IsFalse(query.HasNextPage(adGroupBidLandscapePage));

            // Tests for CriterionBidLandscapePage.
            CriterionBidLandscapePage criterionBidLandscapePage = new CriterionBidLandscapePage()
            {
                entries = new CriterionBidLandscape[] {
                    new CriterionBidLandscape()
                    {
                        campaignId      = 125,
                        adGroupId       = 454,
                        landscapePoints = new BidLandscapeLandscapePoint[] {
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 10,
                                impressions = 200
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 5,
                                impressions = 232
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 66,
                                impressions = 550
                            },
                        }
                    }, new CriterionBidLandscape()
                    {
                        campaignId      = 125,
                        adGroupId       = 454,
                        landscapePoints = new BidLandscapeLandscapePoint[] {
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 10,
                                impressions = 200
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 5,
                                impressions = 232
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 66,
                                impressions = 550
                            },
                        }
                    }
                }
            };

            // Start index is less than total number of landscape points (5).
            query.Limit(1, 20);
            Assert.IsTrue(query.HasNextPage(criterionBidLandscapePage));

            // Start index is less than total number of landscape points (0).
            criterionBidLandscapePage.entries = new CriterionBidLandscape[] {
                new CriterionBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {}
                },
                new CriterionBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = null
                }
            };
            query.Limit(1, 20);
            Assert.IsFalse(query.HasNextPage(criterionBidLandscapePage));
        }
        public void TestNextPage()
        {
            SelectQueryBuilder queryBuilder = null;
            SelectQuery        query        = null;

            queryBuilder = new SelectQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignId", "Status", "Clicks", "Impressions")
                           .Where("Clicks").Equals(20)
                           .OrderByAscending("CampaignId")
                           .OrderByDescending("Status")
                           .Build();

            // Test for regular pages.
            CampaignPage campaignPage = new CampaignPage();

            // Query limits should increment by numberResults (20).
            query.Limit(1, 20);
            query.NextPage(campaignPage);
            Assert.IsTrue(query.ToString().Contains("LIMIT 21, 20"));

            // Test for AdGroupBidLandscapePage.
            AdGroupBidLandscapePage adGroupBidLandscapePage = new AdGroupBidLandscapePage();

            adGroupBidLandscapePage.entries = new AdGroupBidLandscape[] {
                new AdGroupBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 10,
                            impressions = 200
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 12,
                            impressions = 232
                        },
                    }
                },
                new AdGroupBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = new BidLandscapeLandscapePoint[] {
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 10,
                            impressions = 200
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 5,
                            impressions = 232
                        },
                        new BidLandscapeLandscapePoint()
                        {
                            clicks      = 66,
                            impressions = 550
                        },
                    }
                }
            };

            // Query limits should increment by total landscapePoints (5).
            query.Limit(1, 20);
            query.NextPage(adGroupBidLandscapePage);
            Assert.IsTrue(query.ToString().Contains("LIMIT 6, 20"));

            // Query limits should increment by total landscapePoints (0).
            adGroupBidLandscapePage.entries = new AdGroupBidLandscape[] {
                new AdGroupBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {}
                },
                new AdGroupBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = null
                }
            };

            query.Limit(1, 20);
            query.NextPage(adGroupBidLandscapePage);
            Assert.IsTrue(query.ToString().Contains("LIMIT 1, 20"));

            CriterionBidLandscapePage criterionBidLandscapePage = new CriterionBidLandscapePage()
            {
                entries = new CriterionBidLandscape[] {
                    new CriterionBidLandscape()
                    {
                        campaignId      = 125,
                        adGroupId       = 454,
                        landscapePoints = new BidLandscapeLandscapePoint[] {
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 10,
                                impressions = 200
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 5,
                                impressions = 232
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 66,
                                impressions = 550
                            },
                        }
                    }, new CriterionBidLandscape()
                    {
                        campaignId      = 125,
                        adGroupId       = 454,
                        landscapePoints = new BidLandscapeLandscapePoint[] {
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 10,
                                impressions = 200
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 5,
                                impressions = 232
                            },
                            new BidLandscapeLandscapePoint()
                            {
                                clicks      = 66,
                                impressions = 550
                            },
                        }
                    }
                }
            };

            // Query limits should increment by total landscapePoints (6).
            query.Limit(1, 20);
            query.NextPage(criterionBidLandscapePage);
            Assert.IsTrue(query.ToString().Contains("LIMIT 7, 20"));

            // Query limits should increment by total landscapePoints (0).
            criterionBidLandscapePage.entries = new CriterionBidLandscape[] {
                new CriterionBidLandscape()
                {
                    campaignId      = 123,
                    adGroupId       = 456,
                    landscapePoints = new BidLandscapeLandscapePoint[] {}
                },
                new CriterionBidLandscape()
                {
                    campaignId      = 125,
                    adGroupId       = 454,
                    landscapePoints = null
                }
            };

            query.Limit(1, 20);
            query.NextPage(criterionBidLandscapePage);
            Assert.IsTrue(query.ToString().Contains("LIMIT 1, 20"));
        }