ক্যাম্পেইন ম্যানেজার ৩৬০ এপিআই-এর রিপোর্টস সার্ভিস আপনাকে রিপোর্ট রিসোর্স অবজেক্ট ব্যবহার করে রিপোর্ট বিল্ডার রিপোর্ট তৈরি ও আপডেট করার সুযোগ দেয়। একটি রিপোর্ট রিসোর্স, যে রিপোর্টটি চালানো হবে তার প্রাথমিক তথ্যের পাশাপাশি রিপোর্ট আউটপুটের কাঠামোও বর্ণনা করে।
এই নির্দেশিকায় রিপোর্টস সার্ভিসের মাধ্যমে প্রোগ্রাম্যাটিকভাবে রিপোর্ট বিল্ডার রিপোর্ট তৈরি এবং আপডেট করার পদ্ধতি বিস্তারিতভাবে বর্ণনা করা হয়েছে।
একটি রিপোর্ট রিসোর্স কনফিগার করুন
রিপোর্ট বিল্ডার রিপোর্ট তৈরি বা আপডেট করার প্রথম ধাপ হলো একটি রিপোর্ট রিসোর্স অবজেক্ট কনফিগার করা। আপনি যদি একটি নতুন রিপোর্ট তৈরি করেন, তাহলে একটি খালি রিসোর্স দিয়ে শুরু করবেন এবং প্রয়োজনীয় ফিল্ডগুলো সেট করবেন। আর যদি একটি বিদ্যমান রিপোর্ট আপডেট করেন, তাহলে আপনার কাছে নিম্নলিখিত বিকল্পগুলো থাকবে:
- পছন্দনীয় : আংশিক আপডেট করা। এই পদ্ধতিতে, আপনি একটি খালি রিসোর্স দিয়ে শুরু করবেন এবং যে ফিল্ডগুলো পরিবর্তন করতে চান তা সেট করবেন। একটি আংশিক আপডেট শুধুমাত্র আপনার নির্দিষ্ট করা ফিল্ডগুলোর পরিবর্তন সংরক্ষণ করে।
- সম্পূর্ণ আপডেট করা হচ্ছে। এই পদ্ধতিতে, আপনি একটি বিদ্যমান রিপোর্ট রিসোর্স লোড করবেন এবং সরাসরি এর ফিল্ডগুলো পরিবর্তন করবেন। একটি সম্পূর্ণ আপডেট সর্বদা রিপোর্টের সমস্ত ফিল্ড সংরক্ষণ করে।
আপনি কোন ধরনের রিপোর্ট কনফিগার করছেন তার উপর নির্ভর করে একটি রিপোর্ট রিসোর্সের সঠিক বিষয়বস্তু ভিন্ন হয়। তা সত্ত্বেও, এমন কয়েকটি ফিল্ড রয়েছে যা সব ধরনের রিপোর্টের ক্ষেত্রেই সাধারণ:
| মাঠ | বর্ণনা |
|---|---|
| প্রয়োজনীয় ক্ষেত্রসমূহ | |
| নাম | প্রতিবেদনটির নাম। |
| প্রকার | প্রতিবেদনের ধরণ। |
| ঐচ্ছিক ক্ষেত্র | |
| ডেলিভারি | রিপোর্টটির ইমেল ডেলিভারি সেটিংস। |
| ফাইলের নাম | এই রিপোর্টের জন্য রিপোর্ট ফাইল তৈরি করার সময় ব্যবহৃত ফাইলের নাম। |
| ফর্ম্যাট | রিপোর্টের আউটপুট ফরম্যাট হবে 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'
)
প্রতিবেদনের মানদণ্ড নির্ধারণ করুন
একবার আপনি রিপোর্টের ধরন বেছে নিয়ে এবং সাধারণ ফিল্ডগুলো কনফিগার করে নিলে, পরবর্তী ধাপ হলো রিপোর্টের মানদণ্ড নির্ধারণ করা। রিপোর্টের মানদণ্ড আপনার রিপোর্টের পরিধি সীমিত করতে ব্যবহৃত হয়, যা কেবল প্রাসঙ্গিক তথ্যই ফেরত আসা নিশ্চিত করে। এটি রিপোর্টের আউটপুটের কাঠামোও নির্ধারণ করে।
ব্যবহৃত মানদণ্ড প্রতিবেদনের ধরনের উপর নির্ভর করে। প্রতিবেদনের ধরন ও মানদণ্ডের মধ্যকার সম্পর্ক নিম্নলিখিত সারণিতে ব্যাখ্যা করা হলো:
| রিপোর্টের ধরণ | মানদণ্ড ক্ষেত্র |
|---|---|
| মান | মানদণ্ড |
| রিচ | পৌঁছানোর মানদণ্ড |
| রূপান্তরের পথ | রূপান্তরের মানদণ্ডে পথ |
| ফ্লাডলাইট | ফ্লাডলাইট মানদণ্ড |
| ক্রস_ডাইমেনশন_রিচ | ক্রসডাইমেনশনরিচক্রাইটেরিয়া |
যদিও এই প্রতিটি প্রকার-নির্দিষ্ট মানদণ্ড কিছুটা ভিন্ন ধরনের ফিল্ড প্রকাশ করে, তবুও কিছু সাধারণ মানদণ্ড ফিল্ড রয়েছে যা সাধারণত রিপোর্টের আউটপুট নিয়ন্ত্রণের জন্য উপযোগী:
| মাঠ | বর্ণনা |
|---|---|
| তারিখের পরিসর | যে তারিখগুলোর জন্য এই রিপোর্টটি চালানো হবে। এটি ব্যবহার করে একটি নিজস্ব শুরু ও শেষের তারিখ অথবা একটি আপেক্ষিক তারিখের পরিসর নির্দিষ্ট করা যায়। |
| ডাইমেনশনফিল্টার | ফলাফল সীমিত করার জন্য ব্যবহৃত ফিল্টারগুলোর একটি তালিকা। ফিল্টার কনফিগার করার বিষয়ে আরও তথ্যের জন্য কোয়েরি ফিল্টার ভ্যালু বিভাগটি দেখুন। |
| মাত্রা | রিপোর্ট আউটপুটে অন্তর্ভুক্ত করার জন্য ক্যাম্পেইন ম্যানেজার ৩৬০ এলিমেন্টগুলোর একটি তালিকা। |
| মেট্রিক নাম | রিপোর্ট আউটপুটে অন্তর্ভুক্ত করার জন্য পরিমাপের প্রমিত এককসমূহ। |
আপনার রিপোর্টের জন্য ডাইমেনশন, মেট্রিক এবং ফিল্টার নির্বাচন করার বিষয়ে আরও তথ্যের জন্য ফিল্ডের সামঞ্জস্যতা নির্ধারণ সংক্রান্ত বিভাগটি দেখুন। অতিরিক্ত টাইপ-নির্দিষ্ট ক্রাইটেরিয়া ফিল্ডগুলো রেফারেন্স ডকুমেন্টেশন এবং হেল্প সেন্টারে ব্যাখ্যা করা হয়েছে।
নীচের উদাহরণটি আমাদের স্ট্যান্ডার্ড রিপোর্ট রিসোর্সে একটি প্রাথমিক মানদণ্ড যোগ করে:
সি#
// 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 = datetime.date.today()
start_date = end_date - datetime.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=str(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);
সফলভাবে সংরক্ষণ করার পর, রেসপন্স বডিতে রিপোর্ট রিসোর্সটির একটি কপি ফেরত পাঠানো হবে। এই রিসোর্সটিতে কয়েকটি নতুন ফিল্ড পূরণ করা থাকবে, যার মধ্যে সবচেয়ে গুরুত্বপূর্ণ হলো 'id' ফিল্ড । আপনার ওয়ার্কফ্লোর বাকি অংশ জুড়ে এই রিপোর্টটিকে উল্লেখ করার জন্য আপনি এই আইডিটিই ব্যবহার করবেন।