পূর্বাভাস

ভূমিকা

এই নির্দেশিকাটি গুগল অ্যাড ম্যানেজার এপিআই-তে পূর্বাভাস ব্যবহারের বিভিন্ন উপায় ব্যাখ্যা করে।

ট্র্যাফিক পূর্বাভাস

ট্র্যাফিক পূর্বাভাস আপনাকে অতীতের ট্র্যাফিকের পাশাপাশি ভবিষ্যতের সম্ভাব্য প্রভাবগুলো পর্যালোচনা করতে সাহায্য করে, যার ফলে ইনভেন্টরিকে আরও ভালোভাবে ভাগ ও প্যাকেজ করার উপায় খুঁজে পাওয়া যায়।

জাভা

// Create the date range. Include the previous and next 7 days.
Interval interval =
    new Interval(
        Instant.now().plus(Duration.standardDays(-7)),
        Instant.now().plus(Duration.standardDays(7)));
DateRange dateRange = new DateRange();
dateRange.setStartDate(DateTimes.toDateTime(interval.getStart()).getDate());
dateRange.setEndDate(DateTimes.toDateTime(interval.getEnd()).getDate());

// Request the traffic data.
TrafficDataRequest trafficDataRequest = new TrafficDataRequest();
trafficDataRequest.setRequestedDateRange(dateRange);
trafficDataRequest.setTargeting(targeting);
TrafficDataResponse trafficData = forecastService.getTrafficData(trafficDataRequest);
    

পাইথন

# Create a start date that's 7 days in the past and an end date that's 7 days
# in the future.
today = datetime.date.today()
start_date = today - datetime.timedelta(days=7)
end_date = today + datetime.timedelta(days=7)

# Create targeting.
targeting = {
    'inventoryTargeting': {
        'targetedAdUnits': [
            {
                'includeDescendants': True,
                'adUnitId': root_ad_unit_id,
            }
        ]
    }
}

# Request the traffic forecast data.
traffic_data = forecast_service.getTrafficData({
    'targeting': targeting,
    'requestedDateRange': {
        'startDate': start_date,
        'endDate': end_date
    }
})
    

পিএইচপি

// Create the date range. Include the previous and next 7 days.
$startDate = AdManagerDateTimes::fromDateTime(new DateTime('-7 day'))
    ->getDate();
$endDate = AdManagerDateTimes::fromDateTime(new DateTime('+7 day'))
    ->getDate();
$dateRange = new DateRange();
$dateRange->setStartDate($startDate);
$dateRange->setEndDate($endDate);

// Request the traffic forecast data.
$trafficDataRequest = new TrafficDataRequest();
$trafficDataRequest->setRequestedDateRange($dateRange);
$trafficDataRequest->setTargeting($targeting);
$trafficData = $forecastService->getTrafficData($trafficDataRequest);
    

সি#

TrafficDataRequest trafficDataRequest = new TrafficDataRequest() {
    requestedDateRange = new DateRange() {
        startDate =
            DateTimeUtilities.FromDateTime(startDate, "America/New_York").date,
        endDate = DateTimeUtilities.FromDateTime(endDate, "America/New_York").date
    },
    targeting = new Targeting() {
        inventoryTargeting = new InventoryTargeting()
        {
            targetedAdUnits = new AdUnitTargeting[] {
                new AdUnitTargeting() {
                 adUnitId = rootAdUnitId,
                 includeDescendants = true
                }
            }
        }
    }
};
TrafficDataResponse trafficData =
    forecastService.getTrafficData(trafficDataRequest);
    

রুবি

# Create a start date that's 7 days in the past and an end date that's 7 days
# in the future.
today = ad_manager.today
start_date = today - 7
end_date = today + 7

# Create targeting.
targeting = {
  :inventory_targeting => {
    :targeted_ad_units => [
      {
        :include_descendants => true,
        :ad_unit_id => root_ad_unit_id
      }
    ]
  }
}

# Request the traffic forecast data.
traffic_data = forecast_service.get_traffic_data({
  :targeting => targeting,
  :requested_date_range => {
    :start_date => start_date.to_h, :end_date => end_date.to_h
  }
})
    

প্রাপ্যতা পূর্বাভাস

একটি AvailabilityForecast সর্বোচ্চ সংখ্যক উপলব্ধ ইউনিটের প্রতিবেদন দেয়, যা দিয়ে লাইন আইটেমটি বুক করা যেতে পারে। এই পূর্বাভাসটি UI-তে থাকা 'চেক ইনভেন্টরি' ফিচারের অনুরূপ।

পূর্বাভাসে উপলব্ধ, মিলে যাওয়া, সম্ভাব্য, সরবরাহ করা এবং সংরক্ষিত ইউনিটগুলো অন্তর্ভুক্ত থাকে। AvailabilityForecastOptions- এ সেট করা বিকল্পগুলোর উপর নির্ভর করে, এতে সমস্ত প্রতিদ্বন্দ্বী লাইন আইটেম এবং প্রতিটি টার্গেটিং ব্রেকডাউনের জন্য উপলব্ধ ইউনিটগুলোও অন্তর্ভুক্ত থাকতে পারে। ডিফল্টরূপে, পূর্বাভাসে এর কোনোটিই অন্তর্ভুক্ত থাকে না।

টার্গেটিং ব্রেকডাউনে প্রতিটি টার্গেটিং ক্রাইটেরিয়ার জন্য ম্যাচ হওয়া এবং উপলব্ধ ইউনিটগুলো অন্তর্ভুক্ত থাকে। এই ব্রেকডাউন এন্ট্রিগুলো লাইন আইটেম টার্গেটিং অনুযায়ী স্বয়ংক্রিয়ভাবে তৈরি হয়। উদাহরণস্বরূপ, অ্যাড ইউনিট আইডি ১২৩৪৫৬-কে টার্গেট করা একটি লাইন আইটেমের ব্রেকডাউনটি নিম্নলিখিতের মতো হবে:

<targetingCriteriaBreakdowns>
  <targetingDimension>AD_UNIT</targetingDimension>
  <targetingCriteriaId>123456</targetingCriteriaId>
  <targetingCriteriaName>My Ad Unit Name</targetingCriteriaName>
   <excluded>false</excluded>
   <availableUnits>1000</availableUnits>
   <matchedUnits>2300</matchedUnits>
</targetingCriteriaBreakdowns>

আপনি বিদ্যমান বা সম্ভাব্য যেকোনো আইটেমেই প্রাপ্যতার পূর্বাভাস চালাতে পারেন।

বিদ্যমান লাইনআইটেম

আপনি কোনো বিদ্যমান লাইন আইটেমের আইডি ব্যবহার করে সেটির প্রাপ্যতা পূর্বাভাস চালাতে পারেন।

জাভা

  // Get the ForecastService.
  ForecastServiceInterface forecastService =
      adManagerServices.get(session, ForecastServiceInterface.class);

  // Get forecast for line item.
  AvailabilityForecastOptions options = new AvailabilityForecastOptions();
  options.setIncludeContendingLineItems(true);
  options.setIncludeTargetingCriteriaBreakdown(true);
  AvailabilityForecast forecast =
      forecastService.getAvailabilityForecastById(lineItemId, options);

  long matched = forecast.getMatchedUnits();
  double availablePercent = (forecast.getAvailableUnits() / (matched * 1.0)) * 100;
  String unitType = forecast.getUnitType().toString().toLowerCase();

  System.out.printf("%d %s matched.%n", matched, unitType);
  System.out.printf("%.2f%% %s available.%n", availablePercent, unitType);

  if (forecast.getPossibleUnits() != null) {
    double possiblePercent = (forecast.getPossibleUnits() / (matched * 1.0)) * 100;
    System.out.printf("%.2f%% %s possible.%n", possiblePercent, unitType);
  }

  System.out.printf(
      "%d contending line items.%n",
      forecast.getContendingLineItems() == null ? 0 : forecast.getContendingLineItems().length);
    

পাইথন

  # Initialize appropriate service.
  forecast_service = client.GetService('ForecastService', version='v202608')

  # Set forecasting options.
  forecast_options = {
      'includeContendingLineItems': True,
      'includeTargetingCriteriaBreakdown': True,
  }

  # Get forecast for line item.
  forecast = forecast_service.getAvailabilityForecastById(
      line_item_id, forecast_options)
  matched = int(forecast['matchedUnits'])
  available_units = int(forecast['availableUnits'])

  if matched > 0:
    available_percent = (float(available_units) / matched) * 100.
  else:
    available_percent = 0

  contending_line_items = getattr(forecast, 'contentingLineItems', [])

  # Display results.
  print('%s %s matched.' % (matched, forecast['unitType'].lower()))
  print('%s%% %s available.' % (
      available_percent, forecast['unitType'].lower()))
  print('%d contending line items.' % len(contending_line_items))

  if 'possibleUnits' in forecast and matched:
    possible_percent = (int(forecast['possibleUnits'])/float(matched)) * 100.
    print('%s%% %s possible' % (possible_percent, forecast['unitType'].lower()))
    

পিএইচপি

      $forecastService = $serviceFactory->createForecastService($session);

      // Get forecast for line item.
      $options = new AvailabilityForecastOptions();
      $options->setIncludeContendingLineItems(true);
      $options->setIncludeTargetingCriteriaBreakdown(true);
      $forecast = $forecastService->getAvailabilityForecastById(
          $lineItemId,
          $options
      );

      // Print out forecast results.
      $matchedUnits = $forecast->getMatchedUnits();
      $unitType = strtolower($forecast->getUnitType());
      printf("%d %s matched.%s", $matchedUnits, $unitType, PHP_EOL);

      if ($matchedUnits > 0) {
          $availableUnits = $forecast->getAvailableUnits();
          $percentAvailableUnits = $availableUnits / $matchedUnits * 100;
          $possibleUnits = $forecast->getPossibleUnits();
          $percentPossibleUnits = $possibleUnits / $matchedUnits * 100;
          printf(
              "%.2d%% %s available.%s",
              $percentAvailableUnits,
              $unitType,
              PHP_EOL
          );
          printf(
              "%.2d%% %s possible.%s",
              $percentPossibleUnits,
              $unitType,
              PHP_EOL
          );
      }

      printf(
          "%d contending line items.%s",
          count($forecast->getContendingLineItems()),
          PHP_EOL
      );
    

সি#

using (ForecastService forecastService = user.GetService<ForecastService>())
{
// Get forecast for line item.
AvailabilityForecastOptions options = new AvailabilityForecastOptions();
options.includeContendingLineItems = true;
options.includeTargetingCriteriaBreakdown = true;
AvailabilityForecast forecast =
    forecastService.getAvailabilityForecastById(lineItemId, options);

// Display results.
long matched = forecast.matchedUnits;
double availablePercent =
    (double) (forecast.availableUnits / (matched * 1.0)) * 100;
String unitType = forecast.unitType.ToString().ToLower();

Console.WriteLine("{0} {1} matched.\n{2} % {3} available.", matched, unitType,
    availablePercent, unitType);
if (forecast.possibleUnitsSpecified)
{
    double possiblePercent =
        (double) (forecast.possibleUnits / (matched * 1.0)) * 100;
    Console.WriteLine(possiblePercent + "% " + unitType + " possible.\n");
}

Console.WriteLine("{0} contending line items.",
    (forecast.contendingLineItems != null)
        ? forecast.contendingLineItems.Length
        : 0);
    

রুবি

  # Get the ForecastService.
  forecast_service = ad_manager.service(:ForecastService, API_VERSION)
  # Set forecasting options.
  forecast_options = {
    :include_contending_line_items => True,
    :include_targeting_criteria_breakdown => True,
  }

  # Get forecast for the line item.
  forecast = forecast_service.get_availability_forecast_by_id(
      line_item_id, forecast_options
  )

  unless forecast.nil?
    # Display results.
    matched = forecast[:matched_units]
    available_percent = forecast[:available_units] * 100.0 / matched
    unit_type = forecast[:unit_type].to_s.downcase
    puts '%.2f %s matched.' % [matched, unit_type]
    puts '%.2f%% of %s available.' % [available_percent, unit_type]
    puts '%d contending line items.' % forecast[:contending_line_items].size
    unless forecast[:possible_units].nil?
      possible_percent = forecast[:possible_units] * 100.0 / matched
      puts '%.2f%% of %s possible.' % [possible_percent, unit_type]
    end
  end
    

এই উদাহরণটির আউটপুট নিম্নলিখিতের অনুরূপ হবে:

100 clicks matched.
2 contending line items.

সম্ভাব্য লাইনআইটেম

বিকল্পভাবে, আপনি একটি সম্ভাব্য লাইন আইটেম ইনস্ট্যানশিয়েট করতে পারেন এবং এটিকে সংরক্ষণ না করেই পূর্বাভাস দিতে পারেন। এটি করার জন্য, একটি স্থানীয় লাইন আইটেম অবজেক্ট ইনস্ট্যানশিয়েট করুন এবং ProspectiveLineItem- এ তা সেট করুন। আপনি যদি একটি অ্যাডভারটাইজার আইডি সেট করেন, তাহলে পূর্বাভাসটি ইউনিফাইড ব্লকিং নিয়মগুলোও বিবেচনায় নেয়।

জাভা

  // Get forecast for prospective line item.
  ProspectiveLineItem prospectiveLineItem = new ProspectiveLineItem();
  prospectiveLineItem.setAdvertiserId(advertiserId);
  prospectiveLineItem.setLineItem(lineItem);
  AvailabilityForecastOptions options = new AvailabilityForecastOptions();
  options.setIncludeContendingLineItems(true);
  options.setIncludeTargetingCriteriaBreakdown(true);

  AvailabilityForecast forecast =
      forecastService.getAvailabilityForecast(prospectiveLineItem, options);
    

পাইথন

  prospective_line_item = {
      'lineItem': line_item,
      'advertiserId': advertiser_id
  }

  # Set forecasting options.
  forecast_options = {
      'includeContendingLineItems': True,
      # The field includeTargetingCriteriaBreakdown can only be set if
      # breakdowns are not manually specified.
      # 'includeTargetingCriteriaBreakdown': True,
      'breakdown': {
          'timeWindows': [
              now_datetime,
              now_datetime + datetime.timedelta(days=1),
              now_datetime + datetime.timedelta(days=2),
              now_datetime + datetime.timedelta(days=3),
              now_datetime + datetime.timedelta(days=4),
              end_datetime
          ],
          'targets': [
              {
                  # Optional, the name field is only used to identify this
                  # breakdown in the response.
                  'name': 'United States',
                  'targeting': {
                      'inventoryTargeting': {
                          'targetedAdUnits': [
                              {
                                  'includeDescendants': True,
                                  'adUnitId': root_ad_unit_id,
                              }
                          ]
                      },
                      'geoTargeting': {
                          'targetedLocations': [
                              {
                                  'id': '2840',
                                  'displayName': 'US'
                              }
                          ]
                      }
                  }
              },
              {
                  # Optional, the name field is only used to identify this
                  # breakdown in the response.
                  'name': 'Geneva',
                  'targeting': {
                      'inventoryTargeting': {
                          'targetedAdUnits': [
                              {
                                  'includeDescendants': True,
                                  'adUnitId': root_ad_unit_id,
                              }
                          ]
                      },
                      'geoTargeting': {
                          'targetedLocations': [
                              {
                                  'id': '20133',
                                  'displayName': 'Geneva'
                              }
                          ]
                      }
                  }
              }
          ]
      }
  }

  # Get forecast.
  forecast = forecast_service.getAvailabilityForecast(
      prospective_line_item, forecast_options)
    

পিএইচপি

      // Get forecast for prospective line item.
      $prospectiveLineItem = new ProspectiveLineItem();
      $prospectiveLineItem->setAdvertiserId($advertiserId);
      $prospectiveLineItem->setLineItem($lineItem);
      $options = new AvailabilityForecastOptions();
      $options->setIncludeContendingLineItems(true);
      $options->setIncludeTargetingCriteriaBreakdown(true);

      $forecast = $forecastService->getAvailabilityForecast(
          $prospectiveLineItem,
          $options
      );
    

সি#

// Get availability forecast.
AvailabilityForecastOptions options = new AvailabilityForecastOptions()
{
    includeContendingLineItems = true,
    // Targeting criteria breakdown can only be included if breakdowns
    // are not speficied.
    includeTargetingCriteriaBreakdown = false,
    breakdown = new ForecastBreakdownOptions
    {
        timeWindows = new DateTime[] {
            lineItem.startDateTime,
            DateTimeUtilities.FromDateTime(tomorrow.AddDays(1),
                "America/New_York"),
            DateTimeUtilities.FromDateTime(tomorrow.AddDays(2),
                "America/New_York"),
            DateTimeUtilities.FromDateTime(tomorrow.AddDays(3),
                "America/New_York"),
            DateTimeUtilities.FromDateTime(tomorrow.AddDays(4),
                "America/New_York"),
            lineItem.endDateTime
        },
        targets = new ForecastBreakdownTarget[] {
            new ForecastBreakdownTarget()
            {
                // Optional name field to identify this breakdown
                // in the response.
                name = "United States",
                targeting = new Targeting()
                {
                    inventoryTargeting = new InventoryTargeting()
                    {
                        targetedAdUnits = new AdUnitTargeting[] {
                            new AdUnitTargeting()
                            {
                                adUnitId = rootAdUnitId,
                                includeDescendants = true
                            }
                        }
                    },
                    geoTargeting = new GeoTargeting()
                    {
                        targetedLocations = new Location[] {
                            new Location() { id = 2840L }
                        }
                    }
                }
            }, new ForecastBreakdownTarget()
            {
                // Optional name field to identify this breakdown
                // in the response.
                name = "Geneva",
                targeting = new Targeting()
                {
                    inventoryTargeting = new InventoryTargeting()
                    {
                        targetedAdUnits = new AdUnitTargeting[] {
                            new AdUnitTargeting()
                            {
                                adUnitId = rootAdUnitId,
                                includeDescendants = true
                            }
                        }
                    },
                    geoTargeting = new GeoTargeting()
                    {
                        targetedLocations = new Location[] {
                            new Location () { id = 20133L }
                        }
                    }
                }
            }
        }
    }
};
ProspectiveLineItem prospectiveLineItem = new ProspectiveLineItem()
{
    advertiserId = advertiserId,
    lineItem = lineItem
};
AvailabilityForecast forecast =
  forecastService.getAvailabilityForecast(prospectiveLineItem, options);
    

রুবি

  prospective_line_item = {
    :advertiser_id => advertiser_id,
    :line_item => line_item
  }

  # Set forecasting options.
  forecast_options = {
    :include_contending_line_items => true,
    # The field includeTargetingCriteriaBreakdown can only be set if breakdowns
    # are not mannually specified.
    # :include_targeting_criteria_breakdown => true,
    :breakdown => {
      # Break down forecast by day from start_time to end_time
      :time_windows => time_windows,
      # Break down forecast by any targeting configuration
      :targets => [
        {
          # Optional, the name field is only used to identify this breakdown in
          # the response.
          :name => 'United States',
          :targeting => {
            :inventory_targeting => targeting[:inventory_targeting],
            :geo_targeting => {
              :targeted_locations => [
                {
                  :id => '2840',
                  :display_name => 'US'
                }
              ]
            }
          }
        },
        {
          # Optional, the name field is only used to identify this breakdown in
          # the response.
          :name => 'Geneva',
          :targeting => {
            :inventory_targeting => targeting[:inventory_targeting],
            :geo_targeting => {
              :targeted_locations => [
                {
                  :id => '20133',
                  :display_name => 'Geneva'
                }
              ]
            }
          }
        }
      ]
    }
  }

  # Get forecast for the line item.
  forecast = forecast_service.get_availability_forecast(
      prospective_line_item, forecast_options)
    

ডেলিভারি পূর্বাভাস

আপনি যদি একাধিক প্রতিযোগী পণ্যের ডেলিভারি সিমুলেট করতে চান, তাহলে DeliveryForecast ব্যবহার করে তা করতে পারেন।

বিদ্যমান লাইনআইটেম

আপনি বিদ্যমান লাইন আইটেমগুলোর আইডি ব্যবহার করে সেগুলোর ডেলিভারি পূর্বাভাস চালাতে পারেন।

জাভা

  // Get the ForecastService.
  ForecastServiceInterface forecastService =
      adManagerServices.get(session, ForecastServiceInterface.class);

  DeliveryForecastOptions options = new DeliveryForecastOptions();

  DeliveryForecast forecast =
      forecastService.getDeliveryForecastByIds(Longs.toArray(lineItemIds), options);

  for (LineItemDeliveryForecast lineItemForecast : forecast.getLineItemDeliveryForecasts()) {
    String unitType = lineItemForecast.getUnitType().toString().toLowerCase();
    System.out.printf("Forecast for line item %d:%n", lineItemForecast.getLineItemId());
    System.out.printf("\t%d %s matched%n", lineItemForecast.getMatchedUnits(), unitType);
    System.out.printf("\t%d %s delivered%n", lineItemForecast.getDeliveredUnits(), unitType);
    System.out.printf(
        "\t%d %s predicted%n", lineItemForecast.getPredictedDeliveryUnits(), unitType);
  }
    

পাইথন

  # Initialize appropriate service.
  forecast_service = client.GetService('ForecastService', version='v202608')

  # Get forecast for line item.
  forecast = forecast_service.getDeliveryForecastByIds(
      [line_item_id1, line_item_id2], {'ignoredLineItemIds': []})

  for single_forecast in forecast['lineItemDeliveryForecasts']:
    unit_type = single_forecast['unitType']
    print('Forecast for line item %d:\n\t%d %s matched\n\t%d %s delivered\n\t'
          '%d %s predicted\n' % (
              single_forecast['lineItemId'], single_forecast['matchedUnits'],
              unit_type, single_forecast['deliveredUnits'], unit_type,
              single_forecast['predictedDeliveryUnits'], unit_type))


if __name__ == '__main__':
  # Initialize client object.
  ad_manager_client = ad_manager.AdManagerClient.LoadFromStorage()
  main(ad_manager_client, LINE_ITEM_ID_1, LINE_ITEM_ID_2)

    

পিএইচপি

      $forecastService = $serviceFactory->createForecastService($session);

      // Get forecast for the line items with no options set.
      $forecast = $forecastService->getDeliveryForecastByIds(
          [$lineItemId1, $lineItemId2],
          new DeliveryForecastOptions()
      );

      // Print out forecast results.
      $lineItemDeliveryForecasts = $forecast->getLineItemDeliveryForecasts();
      foreach ($lineItemDeliveryForecasts as $lineItemForecast) {
          $unitType = strtolower($lineItemForecast->getUnitType());
          printf(
              "Forecast for line item ID %d:%s",
              $lineItemForecast->getLineItemId(),
              PHP_EOL
          );
          printf(
              "    %d %s matched%s",
              $lineItemForecast->getMatchedUnits(),
              $unitType,
              PHP_EOL
          );
          printf(
              "    %d %s delivered%s",
              $lineItemForecast->getDeliveredUnits(),
              $unitType,
              PHP_EOL
          );
          printf(
              "    %d %s predicted%s",
              $lineItemForecast->getPredictedDeliveryUnits(),
              $unitType,
              PHP_EOL
          );
      }
    

সি#

using (ForecastService forecastService = user.GetService<ForecastService>())
{
// Get a delivery forecast for the line items.
DeliveryForecastOptions options = new DeliveryForecastOptions();
options.ignoredLineItemIds = new long[]
{
};
DeliveryForecast forecast = forecastService.getDeliveryForecastByIds(new long[]
{
    lineItemId1,
    lineItemId2
}, options);

// Display results.
foreach (LineItemDeliveryForecast lineItemForecast in forecast
    .lineItemDeliveryForecasts)
{
    String unitType = lineItemForecast.unitType.GetType().Name.ToLower();
    Console.WriteLine("Forecast for line item {0}:",
        lineItemForecast.lineItemId);
    Console.WriteLine("\t{0} {1} matched", lineItemForecast.matchedUnits,
        unitType);
    Console.WriteLine("\t{0} {1} delivered", lineItemForecast.deliveredUnits,
        unitType);
    Console.WriteLine("\t{0} {1} predicted",
        lineItemForecast.predictedDeliveryUnits, unitType);
}

    

রুবি

  # Get the ForecastService.
  forecast_service = ad_manager.service(:ForecastService, API_VERSION)
  # Get forecast for the line item.
  forecast = forecast_service.get_delivery_forecast_by_ids(
      [line_item_id1, line_item_id2], nil)

  unless forecast.nil? || forecast[:line_item_delivery_forecasts].nil?
    forecast[:line_item_delivery_forecasts].each do |single_forecast|
      # Display results.
      unit_type = single_forecast[:unit_type]
      puts ('Forecast for line item %d:\n\t%d %s matched\n\t%d %s ' +
          'delivered\n\t%d %s predicted\n') % [single_forecast[:line_item_id],
          single_forecast[:matched_units], unit_type,
          single_forecast[:delivered_units], unit_type,
          single_forecast[:predicted_delivery_units], unit_type]
    end
  end
    

এই উদাহরণটির আউটপুট নিম্নলিখিতের অনুরূপ হবে:

Forecast for line item 14678:
    100 clicks matched
    0 clicks delivered
    98 clicks predicted

ডেলিভারি সিমুলেশন থেকে কোনো লাইন আইটেম বাদ দিতে চাইলে, DeliveryForecastOptions- এ সেগুলোর আইডি সেট করে তা করতে পারেন।

সম্ভাব্য লাইনআইটেম

প্রাপ্যতা পূর্বাভাসের মতোই, আপনি অসংরক্ষিত লাইন আইটেমগুলোর উপরও ডেলিভারি পূর্বাভাস চালাতে পারেন। এটি করার জন্য, ForecastService.getDeliveryForecast মেথডে ProspectiveLineItem অবজেক্ট ব্যবহার করুন।

ভবিষ্যতের বিক্রয় প্রতিবেদন

ভবিষ্যৎ সেল-থ্রু রিপোর্ট আপনার গুগল অ্যাড ম্যানেজার নেটওয়ার্কের জন্য ইম্প্রেশনের প্রাপ্যতা সম্পর্কে পূর্বাভাস দেয়, যাতে আপনি আপনার আয় এবং সেল-থ্রু রেট সর্বোচ্চ করতে পারেন। রিপোর্টসার্ভিস (ReportService) -এর মাধ্যমে ভবিষ্যৎ সেল-থ্রু রিপোর্ট চালানো যায়।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

আমার অনেকগুলো আইটেম আছে যেগুলোর প্রাপ্যতা আমি পূর্বাভাস করতে চাই। আমি কি একটি অনুরোধে একাধিক পূর্বাভাস চালাতে পারি?
না। আপনাকে প্রতিটি লাইন আইটেম বা সম্ভাব্য লাইন আইটেমের জন্য আলাদাভাবে প্রাপ্যতা পূর্বাভাসের অনুরোধ করতে হবে।
আমি বেশ কয়েকটি পূর্বাভাস চালিয়েছি এবং এখন EXCEEDED_QUOTA ত্রুটি পাচ্ছি। ব্যাপারটা কী?
পূর্বাভাস তৈরি করা গণনাগতভাবে ব্যয়বহুল, এবং কোটা ব্যবস্থা পরিষেবাটির নির্ভরযোগ্যতা নিশ্চিত করে। কোটা ত্রুটির কারণে যে পূর্বাভাসগুলো তৈরি হয়েছে, আপনি নিরাপদে অপেক্ষা করে সেগুলো পুনরায় চেষ্টা করতে পারেন।
NO_FORECAST_YET বা NOT_ENOUGH_INVENTORY ত্রুটিগুলো কী কারণে ঘটে?
আপনার নেটওয়ার্কের ট্র্যাফিকের ইতিহাসের উপর ভিত্তি করে পূর্বাভাস চালানো হয়। কখনও কখনও, পূর্বাভাস চালানোর জন্য পর্যাপ্ত ঐতিহাসিক ডেটা থাকে না। এই ত্রুটিগুলি সম্পর্কে আরও বিস্তারিত জানতে, ForecastError ডকুমেন্টেশন দেখুন।
AlternativeUnitTypeForecast বলতে কী বোঝায়?
কখনও কখনও অন্য কী কী ইনভেন্টরি উপলব্ধ আছে তা জানা দরকারি। উদাহরণস্বরূপ, একটি CPC লাইন আইটেমের জন্য পূর্বাভাস করার সময়, বিকল্প ইউনিট টাইপের পূর্বাভাসগুলিতে ইম্প্রেশনের সংখ্যা সম্পর্কিত তথ্য অন্তর্ভুক্ত থাকবে।
সাধারণভাবে অ্যাড ম্যানেজার পূর্বাভাস নিয়ে আমার আরও কিছু প্রশ্ন আছে।
দেখুন সেগুলি প্রোডাক্টের প্রায়শই জিজ্ঞাসিত প্রশ্নাবলীতে (FAQ) অন্তর্ভুক্ত আছে কিনা, অথবা আমাদের অ্যাড ম্যানেজার হেল্প কমিউনিটিতে জিজ্ঞাসা করুন। নির্দিষ্ট সমস্যার জন্য, অ্যাড ম্যানেজার এপিআই সাপোর্টের সাথে যোগাযোগ করুন।