アド マネージャー API を使用すると、インタラクティブ レポートを作成して実行できます。アド マネージャーのインタラクティブ レポートの詳細については、インタラクティブ レポートを作成するをご覧ください。インタラクティブ レポートでは、次のことができます。
- API を使用して新しいレポートを作成し、実行を開始します。
- アド マネージャーの管理画面で作成した既存のレポートを実行します。
レポートの実行を開始した後、レポートのステータスをポーリングし、完了後に結果を読み取ることができます。
このガイドでは、レポートの作成、Report の非同期実行の開始、返された Operation ステータスのポーリング、完了した Operation からの Result リソース名の取得、結果の Rows のページ設定されたセットの取得について説明します。
前提条件
続行する前に、Google アド マネージャー ネットワークにアクセスできることを確認してください。アクセス権を取得するには、Google アド マネージャーのスタートガイドとレポートのユーザー役割の権限をご覧ください。
レポートを作成する
networks.reports.create メソッドを使用すると、Report オブジェクトを作成できます。
次の例では、昨日のインプレッションを広告申込情報別に表示するレポートを作成します。
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 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=admanager_v1.ReportDefinition( dimensions=[ Report.Dimension.LINE_ITEM_NAME, Report.Dimension.LINE_ITEM_ID, ], metrics=[ Report.Metric.AD_SERVER_IMPRESSIONS, ], date_range=Report.DateRange( relative=Report.DateRange.RelativeDateRange.YESTERDAY ), report_type=Report.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.Report.Types.Dimesnsion;
using Metric = Google.Ads.AdManager.V1.Report.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 Report.Types.DateRange
{
Relative = Report.Types.DateRange.Types.RelativeDateRange.Yesterday
},
ReportType = Report.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\Report\DateRange;
use Google\Ads\AdManager\V1\Report\Dimension;
use Google\Ads\AdManager\V1\Report\Metric;
use Google\Ads\AdManager\V1\Report\DateRange\RelativeDateRange;
use Google\Ads\AdManager\V1\Report;
use Google\Ads\AdManager\V1\ReportDefinition;
use Google\Ads\AdManager\V1\Report\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::Report::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
リクエスト
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"
レスポンス
{
"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"
}
レポートを作成したら、返された reportId を使用してレポートを実行できます。
レポートを実行する
レポートを実行するには、レポート ID が必要です。レポート ID は、アド マネージャーの UI でレポートの URL から取得できます。たとえば、URL https://admanager.google.com/234093456#reports/interactive/detail/report_id=4555265029 の場合、レポート ID は 4555265029 です。
また、networks.reports.list メソッドを使用して、ユーザーがアクセスできるレポートを読み取り、リソース名から ID を取得することもできます。
networks/234093456/reports/4555265029
レポート ID を取得したら、networks.reports.run メソッドを使用してレポートの非同期実行を開始できます。このメソッドは、長時間実行の Operation のリソース名を返します。次のコード例では、REPORT_ID はレポート ID のプレースホルダ、NETWORK_CODE はネットワーク コードのプレースホルダです。ネットワーク コードを確認するには、アド マネージャーのアカウント情報を確認するをご覧ください。
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
リクエスト
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; }
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
リクエスト
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;
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
リクエスト
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 があります。各行には、ディメンション値のリストと、グループ化された指標値のリストが含まれています。各グループには、指標値と、比較値またはフラグが含まれます。フラグの詳細については、インタラクティブ レポートでフラグを使用するをご覧ください。
期間の比較や分割がないレポートの場合、レポートの期間全体の指標値(インプレッション数やクリック数など)を含む 1 つの 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": {}
}
fetchRows レスポンス
{
"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(
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::Report::DataTable::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
初回リクエスト
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}"
レポートに関する問題のトラブルシューティング
- API でレポートが返されないのはなぜですか?
- 認証するアド マネージャー ユーザーがインタラクティブ レポートにアクセスできることを確認します。アド マネージャー API から読み取ることができるのは、インタラクティブ レポートのみです。
- テスト ネットワークのレポート結果が空になるのはなぜですか?
- テスト ネットワークでは広告が配信されないため、配信レポートにデータがありません。
- 本番環境ネットワークのレポート結果が空であるのはなぜですか?
- 認証に使用しているユーザーが、レポートを作成しようとしているデータにアクセスできない可能性があります。ロールの権限とチームが正しく設定されていることを確認します。
- ライフタイムのクリック数またはインプレッション数が UI のレポートと一致しないのはなぜですか?
- 全期間のインプレッション数は、レポートの期間に関係なく、広告申込情報の全期間のインプレッション数です。広告申込情報がまだ配信中の場合、同じレポートを 2 回実行すると値が変わることがあります。