/// <summary>
    /// Runs the code example.
    /// </summary>
    /// <param name="user">The AdWords user.</param>
    /// <param name="adGroupId">Id of the adgroup for which bid modifier is
    /// set.</param>
    /// <param name="bidModifier">The mobile bid modifier for adgroup</param>
    public void Run(AdWordsUser user, long adGroupId, double bidModifier) {
      // Get the AdGroupAdService.
      AdGroupBidModifierService adGroupBidModifierService =
          (AdGroupBidModifierService) user.GetService(
              AdWordsService.v201509.AdGroupBidModifierService);

      // Mobile criterion ID.
      long criterionId = 30001;


      // Create the adgroup bid modifier.
      AdGroupBidModifier adGroupBidModifier = new AdGroupBidModifier();
      adGroupBidModifier.bidModifier = bidModifier;
      adGroupBidModifier.adGroupId = adGroupId;

      Platform platform = new Platform();
      platform.id = criterionId;

      adGroupBidModifier.criterion = platform;

      AdGroupBidModifierOperation operation = new AdGroupBidModifierOperation();
      operation.@operator = Operator.ADD;
      operation.operand = adGroupBidModifier;


      try {
        // Add ad group level mobile bid modifier.
        AdGroupBidModifierReturnValue retval  = adGroupBidModifierService.mutate(
            new AdGroupBidModifierOperation[] {operation});

        // Display the results.
        if (retval != null && retval.value != null && retval.value.Length > 0) {
          AdGroupBidModifier newBidModifier = retval.value[0];
          Console.WriteLine("AdGroup ID {0}, Criterion ID {1} was updated with ad group level " +
              "modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id,
              newBidModifier.bidModifier);
        } else {
          Console.WriteLine("No bid modifiers were added to the adgroup.");
        }
      } catch (Exception e) {
        throw new System.ApplicationException("Failed to add bid modifiers to adgroup.", e);
      }
    }
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the call is made.</param>
        /// <param name="adGroupId">The ad group to which bid modifiers are set.</param>
        public void Run(GoogleAdsClient client, long customerId, long adGroupId)
        {
            // Get the AdGroupBidModifierService.
            AdGroupBidModifierServiceClient service = client.GetService(
                Services.V3.AdGroupBidModifierService);

            // Constructs the ad group resource name to use for each bid modifier.
            string adGroupResourceName = ResourceNames.AdGroup(customerId, adGroupId);

            // 1) Create an ad group bid modifier based on the hotel check-in day.
            AdGroupBidModifier checkInDayAdGroupBidModifier = new AdGroupBidModifier()
            {
                // Sets the resource name to the ad group resource name joined with the criterion
                // ID whose value corresponds to the desired check-in day.
                AdGroup         = adGroupResourceName,
                HotelCheckInDay = new HotelCheckInDayInfo()
                {
                    DayOfWeek = DayOfWeek.Monday
                },

                // Set the bid modifier value to 150%.
                BidModifier = 1.5,
            };

            // Creates an ad group bid modifier operation.
            var checkInDayAdGroupBidModifierOperation = new AdGroupBidModifierOperation()
            {
                Create = checkInDayAdGroupBidModifier
            };

            // 2) Create an ad group bid modifier based on the hotel length of stay.
            AdGroupBidModifier lengthOfStayAdGroupBidModifier = new AdGroupBidModifier()
            {
                // Set the ad group.
                AdGroup = ResourceNames.AdGroup(customerId, adGroupId),

                // Set the hotel length of stay info.
                HotelLengthOfStay = new HotelLengthOfStayInfo()
                {
                    MinNights = 3,
                    MaxNights = 7
                },

                // Set the bid modifier value to 170%.
                BidModifier = 1.7
            };

            // Create an ad group bid modifier operation.
            var lengthOfStayAdGroupBidModifierOperation = new AdGroupBidModifierOperation()
            {
                Create = lengthOfStayAdGroupBidModifier
            };

            try
            {
                // Issue a mutate request to add an ad group bid modifiers.
                MutateAdGroupBidModifiersResponse response = service.MutateAdGroupBidModifiers(
                    customerId.ToString(),
                    new AdGroupBidModifierOperation[] {
                    checkInDayAdGroupBidModifierOperation,
                    lengthOfStayAdGroupBidModifierOperation
                }
                    );

                // Display the resource names of the added ad group bid modifiers.
                Console.WriteLine($"Added {response.Results.Count} hotel ad group bid modifiers:");

                foreach (MutateAdGroupBidModifierResult result in response.Results)
                {
                    Console.WriteLine($"- {result.ResourceName}");
                }
            }
            catch (GoogleAdsException e)
            {
                Console.WriteLine("Failure:");
                Console.WriteLine($"Message: {e.Message}");
                Console.WriteLine($"Failure: {e.Failure}");
                Console.WriteLine($"Request ID: {e.RequestId}");
                throw;
            }
        }