রিপোর্ট তৈরি করুন এবং আপডেট করুন

ক্যাম্পেইন ম্যানেজার 360 API-এর রিপোর্ট পরিষেবা আপনাকে রিপোর্ট রিসোর্স অবজেক্ট ব্যবহার করে রিপোর্ট বিল্ডার রিপোর্ট তৈরি এবং আপডেট করতে দেয়। একটি প্রতিবেদন সংস্থান একটি প্রতিবেদন চালানোর জন্য মৌলিক তথ্যের পাশাপাশি প্রতিবেদনের আউটপুট গঠনের রূপরেখা দেয়।

রিপোর্ট পরিষেবার মাধ্যমে রিপোর্ট বিল্ডার রিপোর্টগুলি প্রোগ্রাম্যাটিকভাবে কীভাবে তৈরি এবং আপডেট করতে হয় এই নির্দেশিকাটি বিশদ বিবরণ দেয়৷

একটি রিপোর্ট সংস্থান কনফিগার করুন

রিপোর্ট বিল্ডার রিপোর্ট তৈরি বা আপডেট করার প্রথম ধাপ হল রিপোর্ট রিসোর্স অবজেক্ট কনফিগার করা। আপনি যদি একটি নতুন প্রতিবেদন তৈরি করেন, আপনি একটি খালি সংস্থান দিয়ে শুরু করবেন এবং প্রয়োজনীয় ক্ষেত্রগুলি সেট করবেন৷ আপনি যদি একটি বিদ্যমান প্রতিবেদন আপডেট করছেন, তাহলে আপনার কাছে একটি পছন্দ আছে:

  1. পছন্দের : একটি আংশিক আপডেট সম্পাদন করা। এই পদ্ধতি ব্যবহার করে, আপনি একটি খালি সংস্থান দিয়ে শুরু করবেন এবং আপনি যে ক্ষেত্রগুলি পরিবর্তন করতে চান তা সেট করবেন। একটি আংশিক আপডেট শুধুমাত্র আপনার নির্দিষ্ট করা ক্ষেত্রের পরিবর্তনগুলি সংরক্ষণ করে৷
  2. একটি সম্পূর্ণ আপডেট সঞ্চালন. এই পদ্ধতিটি ব্যবহার করে, আপনি একটি বিদ্যমান প্রতিবেদন সংস্থান লোড করবেন এবং সরাসরি এর ক্ষেত্রগুলি পরিবর্তন করবেন। একটি সম্পূর্ণ আপডেট সর্বদা রিপোর্টের সমস্ত ক্ষেত্র সংরক্ষণ করে।

আপনি যে ধরনের রিপোর্ট কনফিগার করছেন তার উপর নির্ভর করে রিপোর্ট রিসোর্সের সঠিক বিষয়বস্তু পরিবর্তিত হয়। তা সত্ত্বেও, কিছু ক্ষেত্র রয়েছে যা সব ধরনের রিপোর্টের জন্য সাধারণ:

মাঠ বর্ণনা
প্রয়োজনীয় ক্ষেত্র
নাম রিপোর্টের নাম।
টাইপ রিপোর্টের ধরন।
ঐচ্ছিক ক্ষেত্র
বিতরণ প্রতিবেদনের ইমেল বিতরণ সেটিংস।
ফাইলের নাম এই রিপোর্টের জন্য রিপোর্ট ফাইল তৈরি করার সময় ব্যবহৃত ফাইলের নাম।
বিন্যাস রিপোর্টের আউটপুট বিন্যাস, হয় CSV বা Excel।
সময়সূচী একটি পুনরাবৃত্ত ভিত্তিতে আপনার প্রতিবেদন চালানোর জন্য ব্যবহৃত একটি সময়সূচী।

এই সাধারণ ক্ষেত্রগুলি আপনার প্রতিবেদনের কঙ্কাল তৈরি করে। নীচের উদাহরণটি একটি নতুন স্ট্যান্ডার্ড রিপোর্ট সংস্থান তৈরির চিত্র তুলে ধরে:

Report report = new Report();

// Set the required fields "name" and "type".
report
.Name = "Example standard report";
report
.Type = "STANDARD";

// Set optional fields.
report
.FileName = "example_report";
report
.Format = "CSV";
Report report = new Report();

// Set the required fields "name" and "type".
report
.setName("Example standard report");
report
.setType("STANDARD");

// Set optional fields
report
.setFileName("example_report");
report
.setFormat("CSV");
$report = new Google_Service_Dfareporting_Report();

// Set the required fields "name" and "type".
$report
->setName('Example standard report');
$report
->setType('STANDARD');

// Set optional fields.
$report
->setFileName('example_report');
$report
->setFormat('CSV');
report = {
   
# Set the required fields "name" and "type".
   
'name': 'Example Standard Report',
   
'type': 'STANDARD',
   
# Set optional fields.
   
'fileName': 'example_report',
   
'format': 'CSV'
}
report = DfareportingUtils::API_NAMESPACE::Report.new(
 
# Set the required fields "name" and "type".
  name
: 'Example Standard Report',
  type
: 'STANDARD',
 
# Set optional fields.
  file_name
: 'example_report',
  format
: 'CSV'
)

প্রতিবেদনের মানদণ্ড নির্ধারণ করুন

একবার আপনি একটি রিপোর্টের ধরন বেছে নিলে এবং সাধারণ ক্ষেত্রগুলি কনফিগার করলে, পরবর্তী ধাপ হল রিপোর্টের মানদণ্ড নির্ধারণ করা। শুধুমাত্র প্রাসঙ্গিক তথ্য ফেরত নিশ্চিত করে আপনার প্রতিবেদনের সুযোগ সীমিত করতে প্রতিবেদনের মানদণ্ড ব্যবহার করা হয়। এটি রিপোর্ট আউটপুট গঠন সংজ্ঞায়িত করে.

ব্যবহৃত মানদণ্ড প্রতিবেদনের ধরনের উপর নির্ভর করে। রিপোর্টের ধরন এবং মানদণ্ডের মধ্যে সম্পর্ক নিম্নলিখিত টেবিলে ব্যাখ্যা করা হয়েছে:

যদিও এই টাইপ-নির্দিষ্ট মাপকাঠিগুলির প্রত্যেকটি ক্ষেত্রগুলির একটি সামান্য ভিন্ন সেট প্রকাশ করে, সেখানে সাধারণ মানদণ্ড ক্ষেত্রগুলির একটি সেট রয়েছে যা সাধারণত রিপোর্ট আউটপুট নিয়ন্ত্রণের জন্য দরকারী:

মাঠ বর্ণনা
তারিখ পরিসীমা যে তারিখের জন্য এই রিপোর্ট চালানো উচিত. একটি কাস্টম শুরু এবং শেষ তারিখ বা একটি আপেক্ষিক তারিখ ব্যাপ্তি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে৷
মাত্রা ফিল্টার ফিল্টারগুলির একটি তালিকা যা ফলাফলগুলিকে সীমাবদ্ধ করে। ফিল্টার কনফিগার করার বিষয়ে আরও তথ্যের জন্য ক্যোয়ারী ফিল্টার মান বিভাগটি দেখুন।
মাত্রা রিপোর্ট আউটপুটে অন্তর্ভুক্ত করার জন্য ক্যাম্পেইন ম্যানেজার 360 উপাদানগুলির একটি তালিকা৷
মেট্রিক নাম রিপোর্ট আউটপুটে অন্তর্ভুক্ত করার জন্য পরিমাপের মানক একক।

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

নীচের উদাহরণটি আমাদের স্ট্যান্ডার্ড রিপোর্ট রিসোর্সে একটি মৌলিক মানদণ্ড যোগ করে:

// Define a date range to report on. This example uses explicit start and
// end dates to mimic the "LAST_30_DAYS" relative date range.
DateRange dateRange = new DateRange();
dateRange
.EndDate = DateTime.Now.ToString("yyyy-MM-dd");
dateRange
.StartDate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd");

// Create a report criteria.
SortedDimension dimension = new SortedDimension();
dimension
.Name = "advertiser";

Report.CriteriaData criteria = new Report.CriteriaData();
criteria
.DateRange = dateRange;
criteria
.Dimensions = new List<SortedDimension>() { dimension };
criteria
.MetricNames = new List<string>() {
 
"clicks",
 
"impressions"
};

// Add the criteria to the report resource.
report
.Criteria = criteria;
// Define a date range to report on. This example uses explicit start and end dates to mimic
// the "LAST_MONTH" relative date range.
DateRange dateRange = new DateRange();
dateRange
.setEndDate(new DateTime(true, System.currentTimeMillis(), null));

Calendar lastMonth = Calendar.getInstance();
lastMonth
.add(Calendar.MONTH, -1);
dateRange
.setStartDate(new DateTime(true, lastMonth.getTimeInMillis(), null));

// Create a report criteria.
Report.Criteria criteria = new Report.Criteria();
criteria
.setDateRange(dateRange);
criteria
.setDimensions(Lists.newArrayList(new SortedDimension().setName("advertiser")));
criteria
.setMetricNames(Lists.newArrayList("clicks", "impressions"));

// Add the criteria to the report resource.
report
.setCriteria(criteria);
// Define a date range to report on. This example uses explicit start and
// end dates to mimic the "LAST_30_DAYS" relative date range.
$dateRange
= new Google_Service_Dfareporting_DateRange();
$dateRange
->setStartDate(
    date
('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 30, date('Y')))
);
$dateRange
->setEndDate(date('Y-m-d'));

// Create a report criteria.
$dimension
= new Google_Service_Dfareporting_SortedDimension();
$dimension
->setName('advertiser');

$criteria
= new Google_Service_Dfareporting_ReportCriteria();
$criteria
->setDateRange($dateRange);
$criteria
->setDimensions([$dimension]);
$criteria
->setMetricNames(['clicks', 'impressions']);

// Add the criteria to the report resource.
$report
->setCriteria($criteria);
# Define a date range to report on. This example uses explicit start and end
# dates to mimic the "LAST_30_DAYS" relative date range.
end_date
= date.today()
start_date
= end_date - timedelta(days=30)

# Create a report criteria.
criteria
= {
   
'dateRange': {
       
'startDate': start_date.strftime('%Y-%m-%d'),
       
'endDate': end_date.strftime('%Y-%m-%d')
   
},
   
'dimensions': [{
       
'name': 'advertiser'
   
}],
   
'metricNames': ['clicks', 'impressions']
}

# Add the criteria to the report resource.
report
['criteria'] = criteria
# Define a date range to report on. This example uses explicit start and end
# dates to mimic the "LAST_30_DAYS" relative date range.
start_date
= DateTime.now.prev_day(30).strftime('%Y-%m-%d')
end_date
= DateTime.now.strftime('%Y-%m-%d')

# Create a report criteria
criteria
= DfareportingUtils::API_NAMESPACE::Report::Criteria.new(
  date_range
: DfareportingUtils::API_NAMESPACE::DateRange.new(
    start_date
: start_date,
    end_date
: end_date
 
),
  dimensions
: [
   
DfareportingUtils::API_NAMESPACE::SortedDimension.new(
      name
: 'advertiser'
   
)
 
],
  metric_names
: ['clicks', 'impressions']
)

# Add the criteria to the report resource.
report
.criteria = criteria

ক্যোয়ারী ফিল্টার মান

একটি রিপোর্টের জন্য ফিল্টার কনফিগার করার সময়, আপনাকে সঠিক মানগুলি নির্দিষ্ট করতে হবে যা ফিল্টারগুলি রিপোর্ট আউটপুট সীমাবদ্ধ করতে ব্যবহার করবে। একটি নির্দিষ্ট ফিল্টারের সম্ভাব্য মানগুলি কী তা আপনি নিশ্চিত না হলে, DimensionValues ​​পরিষেবা ব্যবহার করে সেগুলি দেখুন৷

একটি মৌলিক মাত্রা মান ক্যোয়ারীতে একটি মাত্রার নাম রয়েছে, সেইসাথে একটি শুরুর তারিখ এবং শেষ তারিখ রয়েছে৷ শুরু এবং শেষ তারিখগুলি সেই সময়ের মধ্যে বৈধ মানগুলির প্রতিক্রিয়া সীমিত করে৷ অতিরিক্ত ফিল্টার নির্দিষ্ট করা যেতে পারে যদি আপনি ক্যোয়ারী ফলাফল আরও সীমাবদ্ধ করতে চান।

নীচের উদাহরণটি আমাদের রিপোর্ট চালানোর তারিখের সময় বৈধ বিজ্ঞাপনদাতা ফিল্টার মানগুলি সন্ধান করে এবং প্রতিবেদনের মানদণ্ডে সেগুলি যুক্ত করে:

// Query advertiser dimension values for report run dates.
DimensionValueRequest request = new DimensionValueRequest();
request
.StartDate = report.Criteria.DateRange.StartDate;
request
.EndDate = report.Criteria.DateRange.EndDate;
request
.DimensionName = "advertiser";

DimensionValueList values =
    service
.DimensionValues.Query(request, profileId).Execute();

if (values.Items.Any()) {
 
// Add a value as a filter to the report criteria.
  report
.Criteria.DimensionFilters = new List<DimensionValue>() {
    values
.Items[0]
 
};
}
// Query advertiser dimension values for report run dates.
DimensionValueRequest request = new DimensionValueRequest();
request
.setStartDate(report.getCriteria().getDateRange().getStartDate());
request
.setEndDate(report.getCriteria().getDateRange().getEndDate());
request
.setDimensionName("advertiser");

DimensionValueList values = reporting.dimensionValues().query(profileId, request).execute();

if (!values.getItems().isEmpty()) {
 
// Add a value as a filter to the report criteria.
 
List<DimensionValue> filters = Lists.newArrayList(values.getItems().get(0));
  report
.getCriteria().setDimensionFilters(filters);
}
// Query advertiser dimension values for report run dates.
$request
= new Google_Service_Dfareporting_DimensionValueRequest();
$request
->setStartDate(
    $report
->getCriteria()->getDateRange()->getStartDate()
);
$request
->setEndDate(
    $report
->getCriteria()->getDateRange()->getEndDate()
);
$request
->setDimensionName('advertiser');

$values
=
    $this
->service->dimensionValues->query($userProfileId, $request);

if (!empty($values->getItems())) {
   
// Add a value as a filter to the report criteria.
    $report
->getCriteria()->setDimensionFilters([$values->getItems()[0]]);
}
# Query advertiser dimension values for report run dates.
request
= {
   
'dimensionName': 'advertiser',
   
'endDate': report['criteria']['dateRange']['endDate'],
   
'startDate': report['criteria']['dateRange']['startDate']
}

values
= service.dimensionValues().query(
    profileId
=profile_id, body=request).execute()

if values['items']:
 
# Add a value as a filter to the report criteria.
  report
['criteria']['dimensionFilters'] = [values['items'][0]]
# Query advertiser dimension values for report run dates.
dimension
= DfareportingUtils::API_NAMESPACE::DimensionValueRequest.new(
  dimension_name
: 'advertiser',
  start_date
: report.criteria.date_range.start_date,
  end_date
: report.criteria.date_range.end_date
)

values
= service.query_dimension_value(profile_id, dimension)

unless values.items.empty?
 
# Add a value as a filter to the report criteria.
  report
.criteria.dimension_filters = [values.items.first]
end

ক্ষেত্রের সামঞ্জস্য নির্ধারণ করুন

আপনার প্রতিবেদনের মানদণ্ড কনফিগার করার সময়, এটি মনে রাখা গুরুত্বপূর্ণ যে মেট্রিক্স, মাত্রা এবং ফিল্টারগুলির সমস্ত সমন্বয় বৈধ নয়৷ আপনি একটি অবৈধ সংমিশ্রণ রয়েছে এমন একটি প্রতিবেদন সংরক্ষণ করার অনুমতি পাবেন না, তাই আপনি যে ক্ষেত্রগুলি ব্যবহার করার পরিকল্পনা করছেন তা একে অপরের সাথে সামঞ্জস্যপূর্ণ তা নিশ্চিত করা গুরুত্বপূর্ণ৷

আপনি আপনার প্রতিবেদনের সংস্থান তৈরি করার সাথে সাথে, আপনি এটিকে Reports.compatibleFields পরিষেবাতে পাস করতে পারেন যা আপনি ইতিমধ্যেই বেছে নিয়েছেন কোন ক্ষেত্রগুলি বৈধ তা দেখতে৷ প্রতিবেদনের কনফিগারেশন বিশ্লেষণ করা হবে, এবং সামঞ্জস্যপূর্ণ মাত্রা, মেট্রিক্স এবং ফিল্টার সমন্বিত একটি প্রতিক্রিয়া ফেরত দেওয়া হবে। যেহেতু এই প্রতিক্রিয়ার ক্ষেত্রগুলি একে অপরের সাথে সামঞ্জস্যপূর্ণ হওয়ার গ্যারান্টিযুক্ত নয়, তাই আপনার চয়ন করা সমস্ত ক্ষেত্র একসাথে কাজ করবে তা নিশ্চিত করার জন্য আপনাকে একাধিক অনুরোধ করতে হতে পারে।

নীচের উদাহরণটি ব্যাখ্যা করে কিভাবে একটি নমুনা সামঞ্জস্যপূর্ণ ক্ষেত্র অনুরোধ করতে হয়, ইনপুট হিসাবে আমাদের রিপোর্ট সংস্থান ব্যবহার করে:

CompatibleFields fields =
    service
.Reports.CompatibleFields.Query(report, profileId).Execute();

ReportCompatibleFields reportFields = fields.ReportCompatibleFields;

if(reportFields.Dimensions.Any()) {
 
// Add a compatible dimension to the report.
 
Dimension dimension = reportFields.Dimensions[0];
 
SortedDimension sortedDimension = new SortedDimension();
  sortedDimension
.Name = dimension.Name;
  report
.Criteria.Dimensions.Add(sortedDimension);
} else if (reportFields.Metrics.Any()) {
 
// Add a compatible metric to the report.
 
Metric metric = reportFields.Metrics[0];
  report
.Criteria.MetricNames.Add(metric.Name);
}
CompatibleFields fields = reporting.reports().compatibleFields()
   
.query(profileId, report).execute();

ReportCompatibleFields reportFields = fields.getReportCompatibleFields();

if (!reportFields.getDimensions().isEmpty()) {
 
// Add a compatible dimension to the report.
 
Dimension dimension = reportFields.getDimensions().get(0);
 
SortedDimension sortedDimension = new SortedDimension().setName(dimension.getName());
  report
.getCriteria().getDimensions().add(sortedDimension);
} else if (!reportFields.getMetrics().isEmpty()) {
 
// Add a compatible metric to the report.
 
Metric metric = reportFields.getMetrics().get(0);
  report
.getCriteria().getMetricNames().add(metric.getName());
}
$fields = $this->service->reports_compatibleFields->query(
    $userProfileId
,
    $report
);

$reportFields
= $fields->getReportCompatibleFields();

if (!empty($reportFields->getDimensions())) {
   
// Add a compatible dimension to the report.
    $dimension
= $reportFields->getDimensions()[0];
    $sortedDimension
= new Google_Service_Dfareporting_SortedDimension();
    $sortedDimension
->setName($dimension->getName());
    $report
->getCriteria()->setDimensions(
        array_merge
(
            $report
->getCriteria()->getDimensions(),
           
[$sortedDimension]
       
)
   
);
} elseif (!empty($reportFields->getMetrics())) {
   
// Add a compatible metric to the report.
    $metric
= $reportFields->getMetrics()[0];
    $report
->getCriteria()->setMetricNames(
        array_merge
(
            $report
->getCriteria()->getMetricNames(),
           
[$metric->getName()]
       
)
   
);
}
fields = service.reports().compatibleFields().query(
    profileId
=profile_id, body=report).execute()

report_fields
= fields['reportCompatibleFields']

if report_fields['dimensions']:
 
# Add a compatible dimension to the report.
  report
['criteria']['dimensions'].append({
     
'name': report_fields['dimensions'][0]['name']
 
})
elif report_fields['metrics']:
 
# Add a compatible metric to the report.
  report
['criteria']['metricNames'].append(
      report_fields
['metrics'][0]['name'])
fields = service.query_report_compatible_field(profile_id, report)

report_fields
= fields.report_compatible_fields

if report_fields.dimensions.any?
 
# Add a compatible dimension to the report.
  report
.criteria.dimensions <<
   
DfareportingUtils::API_NAMESPACE::SortedDimension.new(
      name
: report_fields.dimensions.first.name
   
)
elsif report_fields.metrics.any?
 
# Add a compatible metric to the report.
  report
.criteria.metric_names << report_fields.metrics.first.name
end

প্রতিবেদনটি সংরক্ষণ করুন

এই প্রক্রিয়ার চূড়ান্ত ধাপ হল আপনার প্রতিবেদনের সংস্থান সংরক্ষণ করা। আপনি যদি একটি নতুন প্রতিবেদন তৈরি করেন, তাহলে আপনি Reports.insert- এ একটি কল দিয়ে এটি সন্নিবেশ করতে পারেন:

Report insertedReport =
    service
.Reports.Insert(report, profileId).Execute();
Report insertedReport = reporting.reports().insert(profileId, report).execute();
$insertedReport =
    $this
->service->reports->insert($userProfileId, $report);
inserted_report = service.reports().insert(
    profileId
=profile_id, body=report).execute()
report = service.insert_report(profile_id, report)

আপনি যদি একটি আংশিক আপডেট সম্পাদন করছেন, আপনি Reports.patch এ কল করে আপনার পরিবর্তনগুলি সংরক্ষণ করতে পারেন:

// Patch an existing report.
Report patchedReport =
    service
.Reports.Patch(report, profileId, reportId).Execute();
// Patch an existing report.
Report patchedReport = reporting.reports().patch(profileId, reportId, report).execute();
# Patch an existing report.
$patchedReport
=
    $this
->service->reports->patch($userProfileId, $reportId, $report)
# Patch an existing report.
patched_report
= service.reports().patch(
    profileId
=profile_id, reportId=report_id, body=report).execute();
# Patch an existing report.
patched_report
= service.patch_report(profile_id, report_id, report)

অথবা, আপনি যদি সম্পূর্ণ আপডেট করার সিদ্ধান্ত নিয়ে থাকেন, তাহলে Reports.update এ কল করে আপনার পরিবর্তনগুলি সংরক্ষণ করতে পারেন:

// Update an existing report.
Report updatedReport =
    service
.Reports.Update(report, profileId, report.Id).Execute();
// Update an existing report.
Report updatedReport = reporting.reports().update(profileId, report.getId(), report).execute();
# Update an existing report.
$updatedReport
=
    $this
->service->reports->update($userProfileId, $report->getId(), $report)
# Update an existing report.
updated_report
= service.reports().update(
    profileId
=profile_id, reportId=report['id'], body=report).execute();
# Update an existing report.
updated_report
= service.update_report(profile_id, report.id, report);

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