Campaign Manager 360 API के लिए रिपोर्ट सेवा से, रिपोर्ट रिसॉर्स ऑब्जेक्ट का इस्तेमाल करके रिपोर्ट बिल्डर रिपोर्ट बनाई जा सकती हैं और उन्हें अपडेट किया जा सकता है. रिपोर्ट संसाधन, चलने वाली रिपोर्ट के बारे में बुनियादी जानकारी के साथ-साथ रिपोर्ट के आउटपुट की बनावट के बारे में बताता है.
इस गाइड में रिपोर्ट सेवा के ज़रिए रिपोर्ट बिल्डर रिपोर्ट को प्रोग्राम के हिसाब से बनाने और अपडेट करने का तरीका बताया गया है.
रिपोर्ट में मौजूद किसी संसाधन को कॉन्फ़िगर करना
रिपोर्ट बिल्डर रिपोर्ट को बनाने या अपडेट करने का पहला चरण है, रिपोर्ट रिसॉर्स ऑब्जेक्ट को कॉन्फ़िगर करना. अगर नई रिपोर्ट बनाई जा रही है, तो खाली संसाधन से शुरुआत करें और ज़रूरी फ़ील्ड सेट करें. किसी मौजूदा रिपोर्ट को अपडेट करते समय, आपके पास ये विकल्प होते हैं:
- पसंदीदा: आंशिक अपडेट किया जा रहा है. इस तरीके का इस्तेमाल करने पर, आपको एक खाली संसाधन से शुरुआत करनी होगी. साथ ही, उन फ़ील्ड को सेट करना होगा जिनमें बदलाव करना है. कुछ हद तक अपडेट करने पर, सिर्फ़ उन फ़ील्ड में किए गए बदलाव सेव होते हैं जिन्हें आपने चुना है.
- पूरा अपडेट किया जा रहा है. इस तरीके का इस्तेमाल करके, किसी मौजूदा रिपोर्ट रिसॉर्स को लोड किया जा सकता है और सीधे उसके फ़ील्ड में बदलाव किया जा सकता है. पूरी तरह से अपडेट होने पर, रिपोर्ट के सभी फ़ील्ड हमेशा सेव रहते हैं.
रिपोर्ट संसाधन का कॉन्टेंट, उस रिपोर्ट के टाइप के आधार पर अलग-अलग होता है जिसे आपने कॉन्फ़िगर किया है. इसके बावजूद, कुछ ऐसे फ़ील्ड होते हैं जो सभी तरह की रिपोर्ट में एक जैसे होते हैं:
फ़ील्ड | ब्यौरा |
---|---|
ज़रूरी फ़ील्ड | |
नाम | रिपोर्ट का नाम. |
टाइप | रिपोर्ट किस तरह की है. |
ऐसे फ़ील्ड जो ज़रूरी नहीं हैं | |
डिलीवरी | रिपोर्ट की ईमेल डिलीवरी सेटिंग. |
fileName | इस रिपोर्ट के लिए रिपोर्ट फ़ाइलें जनरेट करते समय इस्तेमाल किया गया फ़ाइल नाम. |
फ़ॉर्मैट | रिपोर्ट का आउटपुट फ़ॉर्मैट, CSV या Excel. |
शेड्यूल | आपकी रिपोर्ट को बार-बार चलाने के लिए इस्तेमाल किया जाने वाला शेड्यूल. |
ये सामान्य फ़ील्ड आपकी रिपोर्ट का ढांचा बनाते हैं. यहां दिए गए उदाहरण में, एक नया स्टैंडर्ड रिपोर्ट रिसॉर्स बनाने के बारे में बताया गया है:
C#
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";
Java
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");
PHP
$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');
Python
report = {
# Set the required fields "name" and "type".
'name': 'Example Standard Report',
'type': 'STANDARD',
# Set optional fields.
'fileName': 'example_report',
'format': 'CSV'
}
Ruby
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'
)
रिपोर्ट की शर्तें तय करना
रिपोर्ट का टाइप चुनने और सामान्य फ़ील्ड कॉन्फ़िगर करने के बाद, अगला चरण है रिपोर्ट की शर्तें तय करना. रिपोर्ट से जुड़ी शर्तों का इस्तेमाल, आपकी रिपोर्ट का दायरा सीमित करने के लिए किया जाता है. इससे यह पक्का किया जाता है कि सिर्फ़ काम की जानकारी दिखे. इससे रिपोर्ट के आउटपुट के स्ट्रक्चर के बारे में भी पता चलता है.
यह तय होगा कि रिपोर्ट किस तरह की है. रिपोर्ट टाइप और शर्तों के बीच संबंध को इस टेबल में बताया गया है:
रिपोर्ट का टाइप | मानदंड फ़ील्ड |
---|---|
स्टैंडर्ड | शर्त |
आरईएसीएच | reachCriteria |
PATH_TO_CONVERSION | pathToConversionCriteria |
फ़्लडलाइट | floodlightCriteria |
CROSS_DIMENSION_REACH | crossDimensionReachCriteria |
इनमें से हर एक खास मानदंड से फ़ील्ड का थोड़ा अलग सेट दिखता है, लेकिन समान मानदंड फ़ील्ड का एक सेट होता है जो रिपोर्ट के आउटपुट को कंट्रोल करने में आम तौर पर काम आता है:
फ़ील्ड | ब्यौरा |
---|---|
dateRange | वे तारीखें जिनके लिए यह रिपोर्ट चलाई जानी चाहिए. इसका इस्तेमाल, पसंद के मुताबिक शुरू और खत्म होने की तारीख या तारीख की सीमा के बारे में बताने के लिए किया जा सकता है. |
dimensionFilters | फ़िल्टर की ऐसी सूची जो दिखाए जाने वाले नतीजों पर पाबंदी लगाती है. फ़िल्टर कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी के लिए, क्वेरी फ़िल्टर की वैल्यू सेक्शन देखें. |
आयाम | रिपोर्ट आउटपुट में शामिल करने के लिए, Campaign Manager 360 के एलिमेंट की सूची. |
metricNames | रिपोर्ट के आउटपुट में शामिल करने के लिए, माप की स्टैंडर्ड इकाइयां. |
अपनी रिपोर्ट के लिए डाइमेंशन, मेट्रिक, और फ़िल्टर चुनने के बारे में ज़्यादा जानकारी के लिए, फ़ील्ड के साथ काम करने का तरीका तय करना सेक्शन देखें. अलग-अलग टाइप के मानदंड फ़ील्ड के बारे में, रेफ़रंस दस्तावेज़ और सहायता केंद्र में जानकारी दी गई है.
नीचे दिया गया उदाहरण हमारे स्टैंडर्ड रिपोर्ट संसाधन में बुनियादी शर्तें जोड़ता है:
C#
// 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;
Java
// 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);
PHP
// 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);
Python
# 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
Ruby
# 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 सेवा का इस्तेमाल करके उन्हें खोजें.
बेसिक डाइमेंशन वैल्यू वाली क्वेरी में डाइमेंशन का नाम, शुरू होने की तारीख और खत्म होने की तारीख होती है. शुरू और खत्म होने की तारीखें, उस समयावधि के दौरान मान्य वैल्यू के लिए ही रिस्पॉन्स देती हैं. अगर आपको क्वेरी के नतीजों को और सीमित करना है, तो अन्य फ़िल्टर इस्तेमाल किए जा सकते हैं.
नीचे दिए गए उदाहरण में, हमारी रिपोर्ट के चलने की तारीखों के दौरान, विज्ञापन देने वाले लोगों या कंपनियों की मान्य फ़िल्टर वैल्यू देखी जा सकती हैं. इसके बाद, उन्हें रिपोर्ट में शामिल किया जाएगा:
C#
// 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]
};
}
Java
// 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);
}
PHP
// 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]]);
}
Python
# 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]]
Ruby
# 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 सेवा में पास कर सकते हैं. इससे यह देखा जा सकता है कि पहले से चुने हुए फ़ील्ड के हिसाब से कौनसे फ़ील्ड मान्य हैं. रिपोर्ट के कॉन्फ़िगरेशन का विश्लेषण किया जाएगा. इसके बाद, आपको रिपोर्ट के साथ काम करने वाले डाइमेंशन, मेट्रिक, और फ़िल्टर वाला जवाब मिलेगा. इस बात की गारंटी नहीं है कि इस जवाब में मौजूद सभी फ़ील्ड एक-दूसरे के साथ काम करेंगे. इसलिए, आपको कई अनुरोध करने पड़ सकते हैं, ताकि यह पक्का किया जा सके कि आपके चुने गए सभी फ़ील्ड एक साथ काम करें.
नीचे दिए गए उदाहरण में, इनपुट के तौर पर हमारे रिपोर्ट संसाधन का इस्तेमाल करके, सैंपल के तौर पर काम करने वाले फ़ील्ड अनुरोध करने का तरीका बताया गया है:
C#
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);
}
Java
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());
}
PHP
$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()]
)
);
}
Python
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'])
Ruby
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 के साथ शामिल कर सकते हैं:
C#
Report insertedReport =
service.Reports.Insert(report, profileId).Execute();
Java
Report insertedReport = reporting.reports().insert(profileId, report).execute();
PHP
$insertedReport =
$this->service->reports->insert($userProfileId, $report);
Python
inserted_report = service.reports().insert(
profileId=profile_id, body=report).execute()
Ruby
report = service.insert_report(profile_id, report)
अगर आपने कुछ हिस्से को अपडेट किया है, तो Reports.patch पर कॉल करके बदलावों को सेव किया जा सकता है:
C#
// Patch an existing report.
Report patchedReport =
service.Reports.Patch(report, profileId, reportId).Execute();
Java
// Patch an existing report.
Report patchedReport = reporting.reports().patch(profileId, reportId, report).execute();
PHP
# Patch an existing report.
$patchedReport =
$this->service->reports->patch($userProfileId, $reportId, $report)
Python
# Patch an existing report.
patched_report = service.reports().patch(
profileId=profile_id, reportId=report_id, body=report).execute();
Ruby
# Patch an existing report.
patched_report = service.patch_report(profile_id, report_id, report)
इसके अलावा, अगर आपने पूरा अपडेट करने का फ़ैसला लिया है, तो Reports.update पर अपने बदलावों को सेव करें:
C#
// Update an existing report.
Report updatedReport =
service.Reports.Update(report, profileId, report.Id).Execute();
Java
// Update an existing report.
Report updatedReport = reporting.reports().update(profileId, report.getId(), report).execute();
PHP
# Update an existing report.
$updatedReport =
$this->service->reports->update($userProfileId, $report->getId(), $report)
Python
# Update an existing report.
updated_report = service.reports().update(
profileId=profile_id, reportId=report['id'], body=report).execute();
Ruby
# Update an existing report.
updated_report = service.update_report(profile_id, report.id, report);
सेव करने का अनुरोध स्वीकार होने के बाद, जवाब के मुख्य हिस्से में रिपोर्ट संसाधन की एक कॉपी दिखाई जाएगी. इस संसाधन में कुछ नए फ़ील्ड भरे होंगे, जिनमें सबसे ज़रूरी है आईडी फ़ील्ड. इस आईडी का इस्तेमाल, अपने बाकी वर्कफ़्लो के दौरान इस रिपोर्ट को देखने के लिए किया जाएगा.