Mit der Ad Manager API können Sie interaktive Berichte erstellen und ausführen. Weitere Informationen zu interaktiven Berichten in Ad Manager finden Sie unter Interaktiven Bericht erstellen. Mit interaktiven Berichten können Sie Folgendes tun:
- Über die API einen neuen Bericht erstellen und die Ausführung starten
- Einen vorhandenen Bericht ausführen, den Sie in der Ad Manager-Benutzeroberfläche erstellt haben
Nachdem Sie die Ausführung eines Berichts gestartet haben, können Sie den Status des Berichts abfragen und die Ergebnisse nach Abschluss lesen.
In dieser Anleitung wird beschrieben, wie Sie einen Bericht erstellen, eine asynchrone Ausführung eines
Report starten,
den Status des zurückgegebenen
Operation
abfragen, den Ressourcennamen des
Result
aus dem abgeschlossenen
Operation
abrufen und einen paginierten Satz von
Rows mit Ergebnissen abrufen.
Voraussetzungen
Prüfen Sie, ob Sie Zugriff auf ein Google Ad Manager-Netzwerk haben. Informationen zum Zugriff finden Sie unter Einführung in Google Ad Manager und Berechtigungen für Nutzerrollen für Berichte.
Bericht erstellen
Mit der
networks.reports.create
Methode können Sie ein Report
Objekt erstellen.
Im folgenden Beispiel wird ein Bericht erstellt, in dem die Impressionen vom Vortag nach Werbebuchung aufgeschlüsselt sind:
Java
import com.google.ads.admanager.v1.CreateReportRequest;
import com.google.ads.admanager.v1.NetworkName;
import com.google.ads.admanager.v1.Report;
import com.google.ads.admanager.v1.ReportServiceClient;
public class SyncCreateReport {
public static void main(String[] args) throws Exception {
syncCreateReport();
}
public static void syncCreateReport() throws Exception {
try (ReportServiceClient reportServiceClient = ReportServiceClient.create()) {
Report report =
Report.newBuilder()
.setDisplayName("My API Report")
.setReportDefinition(
ReportDefinition.newBuilder()
.addDimensions(Dimension.LINE_ITEM_NAME)
.addDimensions(Dimension.LINE_ITEM_ID)
.addMetrics(Metric.AD_SERVER_IMPRESSIONS)
.setDateRange(DateRange.newBuilder().setRelative(RelativeDateRange.YESTERDAY))
.setReportType(ReportType.HISTORICAL)
.build())
.build();
CreateReportRequest request =
CreateReportRequest.newBuilder()
.setParent(NetworkName.of("NETWORK_CODE").toString())
.setReport(report)
.build();
Report response = reportServiceClient.createReport(request);
}
}
}
Python
from google.ads import admanager_v1 from google.ads.admanager_v1 import Report, ReportDefinition def sample_create_report(): # Create a client client = admanager_v1.ReportServiceClient() # Initialize request argument(s) report = admanager_v1.Report( display_name="My API Report", report_definition=ReportDefinition( dimensions=[ ReportDefinition.Dimension.LINE_ITEM_NAME, ReportDefinition.Dimension.LINE_ITEM_ID, ], metrics=[ ReportDefinition.Metric.AD_SERVER_IMPRESSIONS, ], date_range=ReportDefinition.DateRange( relative=ReportDefinition.DateRange.RelativeDateRange.YESTERDAY ), report_type=ReportDefinition.ReportType.HISTORICAL, ) ) request = admanager_v1.CreateReportRequest( parent="networks/NETWORK_CODE", report=report, ) # Make the request response = client.create_report(request=request) # Handle the response print(response)
.NET
using Google.Ads.AdManager.V1;
using Dimension = Google.Ads.AdManager.V1.ReportDefinition.Types.Dimension;
using Metric = Google.Ads.AdManager.V1.ReportDefinition.Types.Metric;
public sealed partial class GeneratedReportServiceClientSnippets
{
public void CreateReport()
{
// Create client
ReportServiceClient reportServiceClient = ReportServiceClient.Create();
// Initialize request argument(s)
string parent = "networks/NETWORK_CODE";
Report report = new Report
{
DisplayName = "My API Report",
ReportDefinition = new ReportDefinition
{
Dimensions = { Dimension.LineItemName, Dimension.LineItemId },
Metrics = { Metric.AdServerImpressions },
DateRange = new ReportDefinition.Types.DateRange
{
Relative = ReportDefinition.Types.DateRange.Types.RelativeDateRange.Yesterday
},
ReportType = ReportDefinition.Types.ReportType.Historical
}
};
// Make the request
Report response = reportServiceClient.CreateReport(parent, report);
}
}
PHP
use Google\Ads\AdManager\V1\Client\ReportServiceClient;
use Google\Ads\AdManager\V1\CreateReportRequest;
use Google\Ads\AdManager\V1\ReportDefinition\DateRange;
use Google\Ads\AdManager\V1\ReportDefinition\Dimension;
use Google\Ads\AdManager\V1\ReportDefinition\Metric;
use Google\Ads\AdManager\V1\ReportDefinition\DateRange\RelativeDateRange;
use Google\Ads\AdManager\V1\Report;
use Google\Ads\AdManager\V1\ReportDefinition;
use Google\Ads\AdManager\V1\ReportDefinition\ReportType;
function createReport(): void
{
$client = new ReportServiceClient();
$report = (new Report())
->setDisplayName('My API Report')
->setReportDefinition((new ReportDefinition())
->setDimensions([
Dimension::LINE_ITEM_NAME,
Dimension::LINE_ITEM_ID
])
->setMetrics([
Metric::AD_SERVER_IMPRESSIONS
])
->setDateRange((new DateRange)
->setRelative(RelativeDateRange::YESTERDAY)
)
->setReportType(ReportType::HISTORICAL)
);
$request = new CreateReportRequest([
'parent' => "networks/NETWORK_CODE",
'report' => $report
]);
$response = $client->createReport($request);
print_r($response);
}Ruby
require "google/ads/ad_manager/v1"
def create_report
# Create a client object. The client can be reused for multiple calls.
client = Google::Ads::AdManager::V1::ReportService::Rest::Client.new
report = Google::Ads::AdManager::V1::Report.new(
display_name: "My API Report",
report_definition: Google::Ads::AdManager::V1::ReportDefinition.new(
dimensions: [
:LINE_ITEM_NAME,
:LINE_ITEM_ID
],
metrics: [
:AD_SERVER_IMPRESSIONS
],
date_range: Google::Ads::AdManager::V1::ReportDefinition::DateRange.new(
relative: :YESTERDAY
),
report_type: :HISTORICAL
)
)
# Create a request. To set request fields, pass in keyword arguments.
request = Google::Ads::AdManager::V1::CreateReportRequest.new(
parent: 'networks/NETWORK_CODE'
report: report
)
# Call the create_report method.
result = client.create_report request
# The returned object is of type Google::Ads::AdManager::V1::Report.
p result
end
Node.js
const parent = 'networks/NETWORK_CODE';
const report = {
displayName: 'My API Report',
reportDefinition: {
dimensions: ['LINE_ITEM_NAME', 'LINE_ITEM_ID'],
metrics: ['AD_SERVER_IMPRESSIONS'],
dateRange: {
relative: 'YESTERDAY',
},
reportType: 'HISTORICAL',
},
};
// Imports the Admanager library
const {ReportServiceClient} = require('@google-ads/admanager').v1;
// Instantiates a client
const admanagerClient = new ReportServiceClient();
async function callCreateReport() {
// Construct request
const request = {
parent,
report,
};
// Run request
const response = await admanagerClient.createReport(request);
console.log(response);
}
callCreateReport();
cURL
Anfrage
curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"report": {
"displayName": "My API Report",
"reportDefinition": {
"dimensions": ["LINE_ITEM_NAME", "LINE_ITEM_ID"],
"metrics": ["AD_SERVER_IMPRESSIONS"],
"dateRange": {
"relative": "YESTERDAY"
},
"reportType": "HISTORICAL"
}
}
}' \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports"
Antwort
{
"name": "networks/234093456/reports/4555265029",
"displayName": "My API Report",
"reportId": "4555265029",
"reportDefinition": {
"dimensions": [
"LINE_ITEM_NAME",
"LINE_ITEM_ID"
],
"metrics": [
"AD_SERVER_IMPRESSIONS"
],
"dateRange": {
"relative": "YESTERDAY"
},
"reportType": "HISTORICAL"
},
"visibility": "HIDDEN"
}
Nachdem Sie einen Bericht erstellt haben, können Sie ihn mit der zurückgegebenen reportId ausführen.
Bericht erstellen
Zum Ausführen eines Berichts benötigen Sie die Berichts-ID. Sie können eine Berichts-ID in der Ad Manager-Benutzeroberfläche über die Berichts-URL abrufen. In der URL
https://admanager.google.com/234093456#reports/interactive/detail/report_id=4555265029
ist die Berichts-ID beispielsweise 4555265029.
Sie können auch Berichte lesen, auf die Ihr Nutzer Zugriff hat, indem Sie die
networks.reports.list
Methode verwenden und die ID aus dem Ressourcennamen abrufen:
networks/234093456/reports/4555265029
Nachdem Sie die Berichts-ID haben, können Sie mit der
Methode eine asynchrone Ausführung des
networks.reports.run
Berichts starten. Diese Methode gibt den Ressourcennamen eines Vorgangs mit langer Ausführungszeit
Operation zurück.
Beachten Sie, dass in dem folgenden Beispielcode REPORT_ID ein Platzhalter für die Berichts-ID und NETWORK_CODE ein Platzhalter für Ihren Netzwerkcode ist. Informationen zum Ermitteln Ihres Netzwerkcodes finden Sie unter
Ad Manager-Kontoinformationen finden.
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_ID");
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_ID", ) # 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_ID");
// 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;
}
}
}
PHP
use Google\Ads\AdManager\V1\Client\ReportServiceClient;
use Google\Ads\AdManager\V1\RunReportRequest;
use Google\Ads\AdManager\V1\RunReportResponse;
use Google\ApiCore\ApiException;
use Google\ApiCore\OperationResponse;
use Google\Rpc\Status;
function run_report_sample(string $formattedName): void
{
// Create a client.
$reportServiceClient = new ReportServiceClient();
// Prepare the request message.
$request = (new RunReportRequest())
->setName($formattedName);
// Call the API and handle any network failures.
try {
$response = $reportServiceClient->runReport($request);
$response->pollUntilComplete();
if ($response->operationSucceeded()) {
$result = $response->getResult();
printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString());
} else {
$error = $response->getError();
printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString());
}
} catch (ApiException $ex) {
printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
}
}
function callSample(): void
{
$formattedName = ReportServiceClient::reportName('NETWORK_CODE', 'REPORT_ID');
run_report_sample($formattedName);
}Ruby
require "google/ads/ad_manager/v1"
def run_report
# Create a client object. The client can be reused for multiple calls.
client = Google::Ads::AdManager::V1::ReportService::Rest::Client.new
# Create a request. To set request fields, pass in keyword arguments.
request = Google::Ads::AdManager::V1::RunReportRequest.new(
:name => 'networks/NETWORK_CODE/reports/REPORT_ID'
)
# Call the run_report method.
result = client.run_report request
# The returned object is of type Gapic::Operation. You can use it to
# check the status of an operation, cancel it, or wait for results.
# Here is how to wait for a response.
result.wait_until_done! timeout: 60
if result.response?
p result.response
else
puts "No response received."
end
end
Node.js
const name = 'networks/NETWORK_CODE/reports/REPORT_ID';
// Imports the Admanager library
const {ReportServiceClient} = require('@google-ads/admanager').v1;
// Instantiates a client
const admanagerClient = new ReportServiceClient();
async function callRunReport() {
// Construct request
const request = {
name,
};
// Run request
const [operation] = await admanagerClient.runReport(request);
const [response] = await operation.promise();
console.log(response);
}
callRunReport();
cURL
Anfrage
curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \ "https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/{$REPORT_ID}:run"
Antwort
{ "name": "networks/234093456/operations/reports/runs/6485392645", "metadata": { "@type": "type.googleapis.com/google.ads.admanager.v1.RunReportMetadata", "report": "networks/234093456/reports/4555265029" } }
Berichtsstatus abfragen
Wenn Sie eine Clientbibliothek verwenden, fragt der Beispielcode im vorherigen Abschnitt
den Status des Vorgangs zur Ausführung des Berichts
Operation
in den empfohlenen Intervallen ab und gibt das Ergebnis zurück, sobald es verfügbar ist. Weitere
Informationen zu den empfohlenen Abfrageintervallen finden Sie unter
networks.reports.run.
Wenn Sie mehr Kontrolle über das Polling haben möchten, können Sie eine einzelne Anfrage senden, um den aktuellen Status eines laufenden Berichts mit der networks.operations.reports.runs.get Methode abzurufen. Einige Clientbibliotheken unterstützen auch das Festlegen benutzerdefinierter Abfragestrategien:
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; }
PHP
$options = [
'initialPollDelayMillis' => 500, // Initial delay of 500ms
'pollDelayMultiplier' => 1.5,
'maxPollDelayMillis' => 30000, // Max poll delay of 30 seconds
'totalPollTimeoutMillis' => 60 * 60 * 1000, // Total timeout of 1 hour in milliseconds
];
$response = $reportServiceClient->runReport($request);
$response->pollUntilComplete($options);Ruby
options = {
initial_delay: 0.5, # Initial delay of 500ms (0.5 seconds)
multiplier: 1.5,
max_delay: 30.0, # Max poll delay of 30 seconds
timeout: 60 * 60 # Total timeout of 1 hour in seconds
}
result = client.run_report request
result.wait_until_done!(retry_policy: options)
if result.response?
p result.response
else
puts "No response received."
end
Node.js
const options = {
initialRetryDelayMillis: 500, // Initial delay of 500ms
retryDelayMultiplier: 1.5,
maxRetryDelayMillis: 30, // Max poll delay of 30 seconds
totalTimeoutMillis: 60 * 60 * 1000 // Total timeout of 1 hour
}
const [operation] = await admanagerClient.runReport(request);
operation.backoffSettings = options;
const [response] = await operation.promise();
console.log(response);
cURL
Anfrage
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/operations/reports/runs/${OPERATION_ID}"
Antwort
{ "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, }
Ressourcennamen des Ergebnisses abrufen
Nachdem der Vorgang zur Ausführung des Berichts
Operation
abgeschlossen ist, enthält er den Ressourcennamen des
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;
PHP
$response = $reportServiceClient->runReport($request);
$response->pollUntilComplete();
if ($response->operationSucceeded()) {
$result = $response->getResult();
// Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
$resultName = $result->getReportResult();
}Ruby
result = client.run_report request
result.wait_until_done!
if result.response?
# Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
p result.response.report_result
else
puts "No response received."
end
Node.js
// Run request
const [operation] = await admanagerClient.runReport(request);
const [response] = await operation.promise();
// Result name in the format networks/[NETWORK_CODE]/reports/[REPORT_ID]/results/[RESULT_ID]
console.log(response.reportResult);
cURL
Anfrage
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/operations/reports/runs/${OPERATION_ID}"
Antwort
{ "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" } }
Ergebniszeilen lesen
Die Result
Ressource hat eine einzige Methode,
networks.reports.results.fetchRows,
um eine paginierte Liste von Zeilen zu lesen. Jede Zeile enthält eine Liste von Dimensionswerten und eine Liste von gruppierten Messwerten. Jede Gruppe enthält den Messwert und alle Vergleichswerte oder Flags. Weitere Informationen zu Flags finden Sie unter
Flags in interaktiven Berichten verwenden.
Bei Berichten ohne Vergleiche oder Aufschlüsselungen nach Zeitraum gibt es eine
einzelne
MetricValueGroup
mit Messwerten (z. B. Impressionen oder Klicks) für den gesamten
Zeitraum des Berichts.
Die Reihenfolge der Dimensions- und Messwerte entspricht der Reihenfolge in der
ReportDefinition
des Report.
Im Folgenden finden Sie ein JSON-Beispiel für eine
fetchRows
Antwort und eine entsprechende
ReportDefinition
:
fetchRows-Antwort
{
"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
}
Berichtdefinition
{
"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": {}
}
Wenn Sie eine Clientbibliothek verwenden, enthält die Antwort einen Iterator, der zusätzliche Seiten verzögert anfordert. Sie können auch die Parameter pageToken und pageSize verwenden. Weitere Informationen zu diesen Suchparametern finden Sie unter
Suchparameter.
Wenn eine weitere Seite vorhanden ist, enthält die Antwort ein Feld nextPageToken mit dem Token, das in der nächsten Anfrage verwendet werden soll.
Java
import com.google.ads.admanager.v1.ReportDataTable;
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 (ReportDataTable.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(
name = "networks/NETWORK_CODE/reports/REPORT_ID/results/RESULT_ID")
# 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, ReportDataTable.Types.Row> response = reportServiceClient.FetchReportResultRows(name);
// Iterate over all response items, lazily performing RPCs as required
foreach (ReportDataTable.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 (ReportDataTable.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<ReportDataTable.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 (ReportDataTable.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;
}
}
PHP
use Google\Ads\AdManager\V1\Client\ReportServiceClient;
use Google\Ads\AdManager\V1\FetchReportResultRowsRequest;
use Google\Ads\AdManager\V1\FetchReportResultRowsResponse;
use Google\ApiCore\ApiException;
function fetch_report_result_rows_sample(): void
{
// Create a client.
$reportServiceClient = new ReportServiceClient();
// Prepare the request message.
$request = (new FetchReportResultRowsRequest())
->setName('networks/NETWORK_CODE/reports/REPORT_ID/results/RESULT_ID');
// Call the API and handle any network failures.
try {
$response = $reportServiceClient->fetchReportResultRows($request);
printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
} catch (ApiException $ex) {
printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
}
}Ruby
require "google/ads/ad_manager/v1"
def fetch_report_result_rows
# Create a client object. The client can be reused for multiple calls.
client = Google::Ads::AdManager::V1::ReportService::Rest::Client.new
# Create a request. To set request fields, pass in keyword arguments.
request = Google::Ads::AdManager::V1::FetchReportResultRowsRequest.new(
:name => 'networks/NETWORK_CODE/reports/REPORT_ID/results/RESULT_ID'
)
# Call the fetch_report_result_rows method.
result = client.fetch_report_result_rows request
# The returned object is of type Gapic::PagedEnumerable. You can iterate
# over elements, and API calls will be issued to fetch pages as needed.
result.each do |item|
# Each element is of type ::Google::Ads::AdManager::V1::ReportDataTable::Row.
p item
end
end
Node.js
const name = 'networks/NETWORK_CODE/reports/REPORT_ID/results/RESULT_ID';
// Imports the Admanager library
const {ReportServiceClient} = require('@google-ads/admanager').v1;
// Instantiates a client
const admanagerClient = new ReportServiceClient();
async function callFetchReportResultRows() {
// Construct request
const request = {
name,
};
// Run request
const iterable = admanagerClient.fetchReportResultRowsAsync(request);
for await (const response of iterable) {
console.log(response);
}
}
callFetchReportResultRows();
cURL
Erste Anfrage
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/${REPORT_ID}/results/${RESULT_ID}:fetchRows"
Anfrage für die nächste Seite
curl -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://admanager.googleapis.com/v1/networks/${NETWORK_CODE}/reports/${REPORT_ID}/results/${RESULT_ID}:fetchRows?pageToken=${PAGE_TOKEN}"
Probleme mit einem Bericht beheben
- Warum wird mein Bericht nicht in der API zurückgegeben?
- Prüfen Sie, ob der Ad Manager-Nutzer, als der Sie sich authentifizieren, Zugriff auf den interaktiven Bericht hat. Interaktive Berichte können nur über die Ad Manager API gelesen werden.
- Warum sind die Berichtsergebnisse in meinem Testnetzwerk leer?
- In Testnetzwerken werden keine Anzeigen ausgeliefert, daher enthalten Auslieferungsberichte keine Daten.
- Warum sind die Berichtsergebnisse in meinem Produktionsnetzwerk leer?
- Der Nutzer, als der Sie sich authentifizieren, hat möglicherweise keinen Zugriff auf die Daten, zu denen Sie einen Bericht erstellen möchten. Prüfen Sie, ob die Berechtigungen und Teams der Rolle richtig festgelegt sind.
- Warum stimmen die Klicks oder Impressionen innerhalb der Laufzeit nicht mit meinem Bericht in der Benutzeroberfläche überein?
- Die Impressionen innerhalb der Laufzeit beziehen sich auf die gesamte Laufzeit der Werbebuchung, unabhängig vom Zeitraum des Berichts. Wenn eine Werbebuchung noch ausgeliefert wird, kann sich der Wert zwischen zwei Ausführungen desselben Berichts ändern.