Ad Manager API का इस्तेमाल करके, इंटरैक्टिव रिपोर्ट बनाई जा सकती है, किसी मौजूदा रिपोर्ट को चलाया जा सकता है, और रिपोर्ट के नतीजे पढ़े जा सकते हैं.
अगर आपको Ad Manager में इंटरैक्टिव रिपोर्टिंग के बारे में जानकारी नहीं है, तो Ad Manager यूज़र इंटरफ़ेस (यूआई) में इंटरैक्टिव रिपोर्ट इस्तेमाल करने का तरीका जानने के लिए, इंटरैक्टिव रिपोर्ट बनाएं लेख पढ़ें.
जटिल रिपोर्ट के लिए, Ad Manager यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, डाइमेंशन और मेट्रिक के साथ काम करने की सुविधा देखी जा सकती है. सभी यूज़र इंटरफ़ेस रिपोर्ट, एपीआई की मदद से चलाई जा सकती हैं.
इस गाइड में, Report
के असाइनमेंट को अलग-अलग प्रोसेस में चलाने का तरीका बताया गया है. साथ ही, इसमें Operation
के स्टेटस को पोल करने, Operation
के पूरा होने पर Result
का नाम पाने, और पेज किए गए नतीजों का सेट Rows
पाने का तरीका भी बताया गया है.
पूर्वापेक्षा
जारी रखने से पहले, पक्का करें कि आपके पास Google Ad Manager नेटवर्क का ऐक्सेस हो. ऐक्सेस पाने के लिए, Google Ad Manager का इस्तेमाल शुरू करना लेख पढ़ें.
रिपोर्ट चलाना
रिपोर्ट चलाने के लिए, आपके पास रिपोर्ट आईडी होना चाहिए. रिपोर्ट के यूआरएल की मदद से, Ad
Manager के यूज़र इंटरफ़ेस (यूआई) में रिपोर्ट आईडी पाया जा सकता है. उदाहरण के लिए, यूआरएलhttps://www.google.com/admanager/234093456#reports/interactive/detail/report_id=4555265029
में, रिपोर्ट आईडी 4555265029
है.
networks.reports.list
तरीका इस्तेमाल करके, उन रिपोर्ट को भी पढ़ा जा सकता है जिनका ऐक्सेस आपके उपयोगकर्ता के पास है. साथ ही, संसाधन के नाम से आईडी भी पाया जा सकता है:
networks/234093456/reports/4555265029
रिपोर्ट आईडी मिलने के बाद, networks.reports.run
तरीके का इस्तेमाल करके, रिपोर्ट को अलग-अलग क्रम में चलाया जा सकता है. यह तरीका, लंबे समय से चल रहे Operation
के संसाधन का नाम दिखाता है.
ध्यान दें कि यहां दिए गए उदाहरण के कोड में, [REPORT]
रिपोर्ट आईडी के लिए प्लेसहोल्डर है और [NETWORK]
आपके नेटवर्क कोड के लिए प्लेसहोल्डर है. अपना नेटवर्क कोड ढूंढने के लिए, Ad Manager खाते की जानकारी ढूंढना लेख पढ़ें.
Java
import com.google.ads.admanager.v1.ReportName;
import com.google.ads.admanager.v1.ReportServiceClient;
import com.google.ads.admanager.v1.RunReportResponse;
public class SyncRunReportReportname {
public static void main(String[] args) throws Exception {
syncRunReportReportname();
}
public static void syncRunReportReportname() throws Exception {
try (ReportServiceClient reportServiceClient = ReportServiceClient.create()) {
ReportName name = ReportName.of("[NETWORK_CODE]", "[REPORT]");
RunReportResponse response = reportServiceClient.runReportAsync(name).get();
}
}
}
Python
from google.ads import admanager_v1 def sample_run_report(): # Create a client client = admanager_v1.ReportServiceClient() # Initialize request argument(s) request = admanager_v1.RunReportRequest( name="networks/[NETWORK_CODE]/reports/[REPORT]", ) # Make the request operation = client.run_report(request=request) print("Waiting for operation to complete...") response = operation.result() # Handle the response print(response)
.NET
using Google.Ads.AdManager.V1;
using Google.LongRunning;
public sealed partial class GeneratedReportServiceClientSnippets
{
public void RunReportResourceNames()
{
// Create client
ReportServiceClient reportServiceClient = ReportServiceClient.Create();
// Initialize request argument(s)
ReportName name = ReportName.FromNetworkCodeReport("[NETWORK_CODE]", "[REPORT]");
// Make the request
Operation<RunReportResponse, RunReportMetadata> response = reportServiceClient.RunReport(name);
// Poll until the returned long-running operation is complete
Operation<RunReportResponse, RunReportMetadata> completedResponse = response.PollUntilCompleted();
// Retrieve the operation result
RunReportResponse result = completedResponse.Result;
// Or get the name of the operation
string operationName = response.Name;
// This name can be stored, then the long-running operation retrieved later by name
Operation<RunReportResponse, RunReportMetadata> retrievedResponse = reportServiceClient.PollOnceRunReport(operationName);
// Check if the retrieved long-running operation has completed
if (retrievedResponse.IsCompleted)
{
// If it has completed, then access the result
RunReportResponse retrievedResult = retrievedResponse.Result;
}
}
}
cURL
अनुरोध
curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \ "https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/{$REPORT_ID}:run"
जवाब
{ "name": "networks/234093456/operations/reports/runs/6485392645", "metadata": { "@type": "type.googleapis.com/google.ads.admanager.v1.RunReportMetadata", "report": "networks/234093456/reports/4555265029" } }
रिपोर्ट की स्थिति के बारे में पोल करना
अगर क्लाइंट लाइब्रेरी का इस्तेमाल किया जा रहा है, तो पिछले सेक्शन के उदाहरण के कोड में, सुझाई गई समयावधि के हिसाब से, रिपोर्ट के चलने की स्थिति Operation
के बारे में जानकारी पाने के लिए पोल किया जाता है. साथ ही, रिपोर्ट पूरी होने पर नतीजा दिया जाता है. पोल के लिए सुझाए गए इंटरवल के बारे में ज़्यादा जानकारी के लिए, networks.reports.run
देखें.
अगर आपको पोलिंग पर ज़्यादा कंट्रोल चाहिए, तो networks.operations.reports.runs.get
तरीके का इस्तेमाल करके, चल रही रिपोर्ट की मौजूदा स्थिति को वापस पाने के लिए अलग से अनुरोध करें:
Java
import com.google.ads.admanager.v1.ReportServiceSettings;
import com.google.api.gax.longrunning.OperationalTimedPollAlgorithm;
import com.google.api.gax.retrying.RetrySettings;
import com.google.api.gax.retrying.TimedRetryAlgorithm;
import java.time.Duration;
public class SyncRunReport {
public static void main(String[] args) throws Exception {
syncRunReport();
}
public static void syncRunReport() throws Exception {
ReportServiceSettings.Builder reportServiceSettingsBuilder = ReportServiceSettings.newBuilder();
TimedRetryAlgorithm timedRetryAlgorithm =
OperationalTimedPollAlgorithm.create(
RetrySettings.newBuilder()
.setInitialRetryDelayDuration(Duration.ofMillis(500))
.setRetryDelayMultiplier(1.5)
.setMaxRetryDelayDuration(Duration.ofMillis(5000))
.setTotalTimeoutDuration(Duration.ofHours(24))
.build());
reportServiceSettingsBuilder
.createClusterOperationSettings()
.setPollingAlgorithm(timedRetryAlgorithm)
.build();
}
}
Python
from google.ads import admanager_v1 from google.longrunning.operations_pb2 import GetOperationRequest def sample_poll_report(): # Run the report client = admanager_v1.ReportServiceClient() response = client.run_report(name="networks/[NETWORK_CODE]/reports/[REPORT_ID]") # Check if the long-running operation has completed operation = client.get_operation( GetOperationRequest(name=response.operation.name)) if(operation.done): # If it has completed, then access the result run_report_response = admanager_v1.RunReportResponse.deserialize(payload=operation.response.value)
.NET
Operation<RunReportResponse, RunReportMetadata> retrievedResponse = reportServiceClient.PollOnceRunReport(operationName); // Check if the retrieved long-running operation has completed if (retrievedResponse.IsCompleted) { // If it has completed, then access the result RunReportResponse retrievedResult = retrievedResponse.Result; }
cURL
अनुरोध
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/operations/reports/runs/${OPERATION_ID}"
जवाब
{ "name": "networks/234093456/operations/reports/runs/6485392645", "metadata": { "@type": "type.googleapis.com/google.ads.admanager.v1.RunReportMetadata", "percentComplete": 50, "report": "networks/234093456/reports/4555265029" }, "done": false, }
नतीजे के संसाधन का नाम पाना
रिपोर्ट रन होने के बाद, Operation
में Result
का रिसॉर्स नाम दिखता है.
Java
RunReportResponse response = reportServiceClient.runReportAsync(name).get();
// Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
String resultName = response.getReportResult();
Python
operation = client.run_report(request=request)
response = operation.result()
# Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
result_name = response.report_result
.NET
Operation<RunReportResponse, RunReportMetadata> response = reportServiceClient.RunReport(request);
// Poll until the returned long-running operation is complete
Operation<RunReportResponse, RunReportMetadata> completedResponse = response.PollUntilCompleted();
RunReportResponse result = completedResponse.Result;
// Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
string resultName = result.ReportResult;
cURL
अनुरोध
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/operations/reports/runs/${OPERATION_ID}"
जवाब
{ "name": "networks/234093456/operations/reports/runs/6485392645", "metadata": { "@type": "type.googleapis.com/google.ads.admanager.v1.RunReportMetadata", "percentComplete": 100, "report": "networks/234093456/reports/4555265029" }, "done": true, "response": { "@type": "type.googleapis.com/google.ads.admanager.v1.RunReportResponse", "reportResult": "networks/234093456/reports/4555265029/results/7031632628" } }
नतीजों की पंक्तियां पढ़ना
Result
रिसोर्स में, पंक्ति की पेज की गई सूची को पढ़ने के लिए, एक ही तरीका, networks.reports.results.fetchRows
है. हर पंक्ति में, डाइमेंशन वैल्यू और ग्रुप की गई मेट्रिक वैल्यू की सूची होती है. हर ग्रुप में मेट्रिक वैल्यू और तुलना वाली वैल्यू या फ़्लैग होते हैं. फ़्लैग के बारे में ज़्यादा जानने के लिए, अपनी इंटरैक्टिव रिपोर्ट में फ़्लैग का इस्तेमाल करना लेख पढ़ें.
जिन रिपोर्ट में तारीख की सीमा की तुलना या स्प्लिट नहीं किया गया है उनके लिए, रिपोर्ट की पूरी तारीख की सीमा के लिए, मेट्रिक वैल्यू (उदाहरण के लिए, इंप्रेशन या क्लिक) वाला एक MetricValueGroup
होता है.
डाइमेंशन और मेट्रिक वैल्यू का क्रम, Report
के ReportDefinition
में मौजूद क्रम जैसा ही होता है.
यहां ReportDefinition
और उससे जुड़े fetchRows
जवाब का JSON उदाहरण दिया गया है:
{
"name": "networks/234093456/reports/4555265029",
"visibility": "SAVED",
"reportId": "4555265029",
"reportDefinition": {
"dimensions": [
"LINE_ITEM_NAME",
"LINE_ITEM_ID"
],
"metrics": [
"AD_SERVER_IMPRESSIONS"
],
"currencyCode": "USD",
"dateRange": {
"relative": "YESTERDAY"
},
"reportType": "HISTORICAL"
},
"displayName": "Example Report",
"updateTime": "2024-09-01T13:00:00Z",
"createTime": "2024-08-01T02:00:00Z",
"locale": "en-US",
"scheduleOptions": {}
}
{
"rows": [
{
"dimensionValues": [
{
"stringValue": "Line Item #1"
},
{
"intValue": "6378470710"
}
],
"metricValueGroups": [
{
"primaryValues": [
{
"intValue": "100"
}
]
}
]
},
{
"dimensionValues": [
{
"stringValue": "Line Item #2"
},
{
"intValue": "5457147368"
}
],
"metricValueGroups": [
{
"primaryValues": [
{
"intValue": "95"
}
]
}
]
}
],
"runTime": "2024-10-02T10:00:00Z",
"dateRanges": [
{
"startDate": {
"year": 2024,
"month": 10,
"day": 1
},
"endDate": {
"year": 2024,
"month": 10,
"day": 1
}
}
],
"totalRowCount": 2
}
अगर क्लाइंट लाइब्रेरी का इस्तेमाल किया जा रहा है, तो रिस्पॉन्स में एक इटरेटर होता है, जो ज़रूरत पड़ने पर ही अतिरिक्त पेजों का अनुरोध करता है. pageToken
और pageSize
पैरामीटर का भी इस्तेमाल किया जा सकता है. इन पैरामीटर के बारे में ज़्यादा जानने के लिए, क्वेरी पैरामीटर देखें.
अगर कोई दूसरा पेज मौजूद है, तो रिस्पॉन्स में nextPageToken
फ़ील्ड होता है. इसमें अगले अनुरोध में इस्तेमाल करने के लिए टोकन होता है.
Java
import com.google.ads.admanager.v1.Report;
import com.google.ads.admanager.v1.ReportServiceClient;
public class SyncFetchReportResultRowsString {
public static void main(String[] args) throws Exception {
syncFetchReportResultRowsString();
}
public static void syncFetchReportResultRowsString() throws Exception {
try (ReportServiceClient reportServiceClient = ReportServiceClient.create()) {
String name = "networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]";
for (Report.DataTable.Row element :
reportServiceClient.fetchReportResultRows(name).iterateAll()) {
}
}
}
}
Python
from google.ads import admanager_v1
def sample_fetch_report_result_rows():
# Create a client
client = admanager_v1.ReportServiceClient()
# Initialize request argument(s)
request = admanager_v1.FetchReportResultRowsRequest(
)
# Make the request
page_result = client.fetch_report_result_rows(request=request)
# Handle the response
for response in page_result:
print(response)
.NET
using Google.Ads.AdManager.V1;
using Google.Api.Gax;
using System;
public sealed partial class GeneratedReportServiceClientSnippets
{
public void FetchReportResultRows()
{
// Create client
ReportServiceClient reportServiceClient = ReportServiceClient.Create();
// Initialize request argument(s)
string name = "";
// Make the request
PagedEnumerable<FetchReportResultRowsResponse, Report.Types.DataTable.Types.Row> response = reportServiceClient.FetchReportResultRows(name);
// Iterate over all response items, lazily performing RPCs as required
foreach (Report.Types.DataTable.Types.Row item in response)
{
// Do something with each item
Console.WriteLine(item);
}
// Or iterate over pages (of server-defined size), performing one RPC per page
foreach (FetchReportResultRowsResponse page in response.AsRawResponses())
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (Report.Types.DataTable.Types.Row item in page)
{
// Do something with each item
Console.WriteLine(item);
}
}
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<Report.Types.DataTable.Types.Row> singlePage = response.ReadPage(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (Report.Types.DataTable.Types.Row item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
}
}
cURL
शुरुआती अनुरोध
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/${REPORT_ID}/results/${RESULT_ID}:fetchRows"
अगले पेज का अनुरोध
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/${REPORT_ID}/results/${RESULT_ID}:fetchRows?pageToken=${PAGE_TOKEN}"
रिपोर्ट से जुड़ी समस्याएं हल करना
- एपीआई में मेरी रिपोर्ट क्यों नहीं दिख रही है?
- पक्का करें कि जिस Ad Manager उपयोगकर्ता की पुष्टि की जा रही है उसके पास इंटरैक्टिव रिपोर्ट का ऐक्सेस हो. Ad Manager API से सिर्फ़ इंटरैक्टिव रिपोर्ट पढ़ी जा सकती हैं.
- मेरे टेस्ट नेटवर्क पर रिपोर्ट के नतीजे खाली क्यों हैं?
- टेस्ट नेटवर्क पर विज्ञापन नहीं दिखाए जाते. इसलिए, डिलीवरी रिपोर्ट में डेटा नहीं होता.
- मेरे प्रोडक्शन नेटवर्क पर रिपोर्ट के नतीजे खाली क्यों हैं?
- ऐसा हो सकता है कि जिस उपयोगकर्ता के तौर पर पुष्टि की जा रही है उसके पास उस डेटा का ऐक्सेस न हो जिसकी आपको रिपोर्ट बनानी है. पुष्टि करें कि उनकी भूमिका के लिए अनुमतियां और टीम सही तरीके से सेट की गई हैं.
- यूज़र इंटरफ़ेस (यूआई) में, लाइफ़टाइम क्लिक या इंप्रेशन, मेरी रिपोर्ट से मेल क्यों नहीं खाते?
- लाइफ़टाइम इंप्रेशन, लाइन आइटम के पूरे लाइफ़साइकल के लिए होते हैं. भले ही, रिपोर्ट की तारीख की सीमा कुछ भी हो. अगर कोई लाइन आइटम अब भी डिलीवर हो रहा है, तो एक ही रिपोर्ट के दो रन के बीच वैल्यू बदल सकती है.