Rapor çalıştırma işlemi, Operation nesnesiyle temsil edilen uzun süreli bir işlem olarak eşzamansız şekilde yürütülür. Rapor çalıştırma işleminin çıktısı, Report
nesnesine dayalı rapor sonuçlarıdır.
Bu kılavuzda, Curation Partners API'yi kullanarak işlem durumunu yoklamak için bir rapor çalıştırma işlemi alma ve tamamlanan rapor çalıştırma işleminin rapor sonuçlarını getirme hakkında bilgi verilmektedir.
Başlamadan önce
Devam etmeden önce aşağıdakileri tamamlamanız gerekir:
- Kimlik doğrulama ayarlama
- Uzun süren bir işlem kaynağı adı almak için rapor çalıştırması başlatın.
Rapor çalıştırmanın durumunu yoklama
Bir rapor çalıştırma işleminin yürütme durumunu kontrol etmek için
curators.reports.operations.get
yöntemini kullanın.
Aşağıdaki örnek, bir işlemi yoklamak için GET isteğinde bulunur:
REST
İstek
curl \
'https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/reports/123456789/operations/10486370264' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--compressed
Aşağıdakini değiştirin:
ACCOUNT_ID: Hesap kimliğiniz.ACCESS_TOKEN: erişim jetonunuz.
Yanıt
Başarıyla tamamlandığında yanıt, Operation olur. done alanı true olarak ayarlanır ve response yükü reportResult kaynak adıyla doldurulur:
{
"name": "curators/ACCOUNT_ID/reports/123456789/operations/10486370264",
"done": true,
"metadata": {
"@type": "type.googleapis.com/google.ads.curationpartners.v1.RunReportMetadata",
"percentComplete": 100
},
"response": {
"@type": "type.googleapis.com/google.ads.curationpartners.v1.RunReportResponse",
"reportResult": "curators/ACCOUNT_ID/reports/123456789/results/10486370264"
}
}
Java
/* * Copyright (c) 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.api.services.samples.curationpartners.v1.curators.reports.operations; import com.google.api.services.curationpartners.v1.CurationPartners; import com.google.api.services.curationpartners.v1.model.Operation; import com.google.api.services.samples.curationpartners.v1.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; public class GetReportOperation { /** * Executes the get operation for a report operation. * * @param curationPartnersClient the initialized Curation Partners API client. * @param accountId the account ID of the curator. * @param reportId the resource ID of the report. * @param operationId the resource ID of the report operation. * @throws IOException if the API returns an error. */ public static void execute( CurationPartners curationPartnersClient, Long accountId, String reportId, String operationId) throws IOException { String name = String.format( "curators/%s/reports/%s/operations/%s", accountId, reportId, operationId); System.out.printf("Getting report operation with name \"%s\".%n", name); // Get the status of the report operation. Operation operation = curationPartnersClient .curators() .reports() .operations() .get(name) .execute(); System.out.println("Successfully retrieved report operation:"); Utils.jsonPrettyPrint(operation); } /** * Creates and configures the ArgumentParser for this sample. * * @return the configured ArgumentParser. */ private static ArgumentParser createArgumentParser() { ArgumentParser parser = ArgumentParsers.newFor("GetReportOperation") .build() .defaultHelp(true) .description("Gets the status of a long-running report operation. If the " + "operation is done, you can view the report contents with the " + "`curators.reports.results.fetchRows` method."); // Required arguments. parser .addArgument("-a", "--account_id") .help("The account ID of the curator.") .required(true) .type(Long.class); parser .addArgument("-r", "--report_id") .help("The resource ID of the report.") .required(true); parser .addArgument("-o", "--operation_id") .help("The resource ID of the report operation to retrieve.") .required(true); return parser; } public static void main(String[] args) { ArgumentParser parser = createArgumentParser(); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } CurationPartners client = null; try { client = Utils.getCurationPartnersClient(); } catch (IOException ex) { System.out.printf("Unable to create Curation Partners API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } try { execute( client, parsedArgs.getLong("account_id"), parsedArgs.getString("report_id"), parsedArgs.getString("operation_id")); } catch (IOException ex) { System.out.printf("Curation Partners API returned error response:%n%s", ex); System.exit(1); } } }
Aşağıda, işlemin durumunu yoklamak için done alanını nasıl kullanabileceğiniz açıklanmaktadır:
- Yanıtın
donealanındafalsedeğeri varsa rapor çalıştırma işlemi hâlâ işleniyor demektir. - Yanıtın
donealanındatruedeğeri varsa rapor çalıştırma işlemi tamamlanmıştır. Yanıt gövdesindekiOperationnesnesi de aşağıdaki alanlardan birini içerir:response: Rapor çalıştırma işleminin başarılı olduğunu gösterir. Bu alan,@typealanıtype.googleapis.com/google.ads.curationpartners.v1.RunReportResponsetürüne ayarlanmış şekilde doldurulmuş bir nesnedir.RunReportResponsetürü, ilgili raporun adını içeren birreportResultalanıyla doldurulurresult.error: Rapor çalıştırma işleminin başarılı olmadığını gösterir.erroralanı, rapor çalıştırmanın neden başarısız olduğunu açıklayan birStatusnesnesiyle doldurulur.
Tamamlanmış bir rapordan satırları getirme
Tamamlanan bir rapor çalıştırma işleminin içeriğini curators.reports.results.fetchRows yöntemiyle alabilirsiniz. Rapor sonucu için name yol parametresini doldurmanız gerekir. Bu parametre, tam bir rapor çalıştırma işleminin reportResult alanındaki kaynak adıdır.
Aşağıdaki örnek, sonuç satırlarını getirmek için GET isteğinde bulunur:
REST
İstek
curl \
'https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/reports/123456789/results/10486370264:fetchRows?pageSize=1' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--compressed
Yanıt
{
"rows": [
{
"dimensionValues": [
{
"stringValue": "2026-08-01"
},
{
"stringValue": "segment-1001"
}
],
"metricValueGroups": [
{
"primaryValues": [
{
"intValue": "150000"
},
{
"intValue": "3200"
},
{
"doubleValue": 450.75
},
{
"doubleValue": 45.08
}
]
}
]
}
],
"runTime": "2026-08-05T12:00:00Z",
"dateRanges": [
{
"startDate": {
"year": 2026,
"month": 7,
"day": 6
},
"endDate": {
"year": 2026,
"month": 8,
"day": 4
}
}
],
"totalRowCount": 2,
"nextPageToken": "QC7nzW91c2VTcGFubmVyQ29udGlubWF0aW6uVG9wZY45NP=="
}
Java
/* * Copyright (c) 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.api.services.samples.curationpartners.v1.curators.reports.results; import com.google.api.services.curationpartners.v1.CurationPartners; import com.google.api.services.curationpartners.v1.model.FetchReportResultRowsResponse; import com.google.api.services.samples.curationpartners.v1.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; public class FetchReportResultRows { /** * Executes the fetchRows operation for report result rows. * * @param curationPartnersClient the initialized Curation Partners API client. * @param accountId the account ID of the curator. * @param reportId the resource ID of the report. * @param resultId the resource ID of the report result. * @param pageSize the maximum number of rows to return per page. * @param pageToken the page token from a previous response, if any. * @throws IOException if the API returns an error. */ public static void execute( CurationPartners curationPartnersClient, Long accountId, String reportId, String resultId, Integer pageSize, String pageToken) throws IOException { String name = String.format("curators/%s/reports/%s/results/%s", accountId, reportId, resultId); System.out.printf("Fetching report result rows for \"%s\".%n", name); CurationPartners.Curators.Reports.Results.FetchRows request = curationPartnersClient.curators().reports().results().fetchRows(name); if (pageSize != null) { request.setPageSize(pageSize); } if (pageToken != null) { request.setPageToken(pageToken); } FetchReportResultRowsResponse response = request.execute(); System.out.println("Successfully fetched report result rows:"); Utils.jsonPrettyPrint(response); } /** * Creates and configures the ArgumentParser for this sample. * * @return the configured ArgumentParser. */ private static ArgumentParser createArgumentParser() { ArgumentParser parser = ArgumentParsers.newFor("FetchReportResultRows") .build() .defaultHelp(true) .description("Fetches rows for a completed report result."); // Required arguments. parser .addArgument("-a", "--account_id") .help("The account ID of the curator.") .required(true) .type(Long.class); parser .addArgument("-r", "--report_id") .help("The resource ID of the report.") .required(true); parser .addArgument("--result_id") .help("The resource ID of the report result. This is identical to the resource ID of " + "the corresponding report run operation.") .required(true); // Optional arguments. parser .addArgument("--page_size") .help("The maximum number of rows to return per page.") .type(Integer.class); parser .addArgument("--page_token") .help("A page token, received from a previous `FetchReportResultRows` call."); return parser; } public static void main(String[] args) { ArgumentParser parser = createArgumentParser(); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } CurationPartners client = null; try { client = Utils.getCurationPartnersClient(); } catch (IOException ex) { System.out.printf("Unable to create Curation Partners API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } try { execute( client, parsedArgs.getLong("account_id"), parsedArgs.getString("report_id"), parsedArgs.getString("result_id"), parsedArgs.getInt("page_size"), parsedArgs.getString("page_token")); } catch (IOException ex) { System.out.printf("Curation Partners API returned error response:%n%s", ex); System.exit(1); } } }
Aşağıdaki sorgu parametrelerini belirtebilirsiniz:
pageSize: Döndürülecek maksimum satır sayısı. Varsayılan değer 1.000 satır, maksimum değer ise 10.000 satırdır.pageToken: Bir öncekifetchRowsyanıtında döndürülen sayfa jetonu, bir sonraki satır grubunu getirmek için kullanılır.
Yanıtta aşağıdaki alanlar bulunur:
rows:Rownesneleri dizisi. Her satırda:dimensionValues: İstenen her boyutun değerleri, rapor tanımındaki boyutlarla aynı sırada.metricValueGroups: Tarih aralıklarına karşılık gelen metrik değer grupları. Her grup, rapor tanımındaki metriklerle aynı şekilde sıralanmış birprimaryValueslistesi içerir.
dateRanges: Rapor için hesaplanan sabit tarih aralıkları.dateRangesalanı yalnızca ilk sayfanın yanıt gövdesine dahil edilir.totalRowCount: Rapor sonucundaki toplam satır sayısı.totalRowCountalanı yalnızca ilk sayfanın yanıt gövdesine dahil edilir.nextPageToken: Satırların bir sonraki sayfasını almak için sonraki isteklere iletilecek jeton. Başka satır yoksa Curation Partners API bu alanı yanıt gövdesinden çıkarır.
curators.reports.results.fetchRows REST örneğinde, rows içindeki her öğe doğrudan raporda yapılandırılan ReportDefinition ile eşlenir:
dimensionValues:reportDefinition.dimensionsalanındaki her boyuta karşılık gelen değerleri, tam olarak belirttiğiniz sırayla içerir. Örnekte, ilk değer2026-08-01,DATEboyutuna, ikinci değersegment-1001iseCURATION_DATA_SEGMENT_IDboyutuna karşılık gelir.metricValueGroups: Rapordaki tarih aralıklarında gruplandırılmış metrik değerlerini içerir. Her grupta,primaryValuesalanı, tam olarak belirttiğiniz sıradareportDefinition.metricsalanındaki her metriğe karşılık gelen değerleri içerir. Bu örnekte, dört değer aşağıdakiMetricenum değerlerine karşılık gelir:IMPRESSIONS:150000CLICKS:3200SPEND:450.75CURATION_PARTNER_FEE:45.08
dateRanges: Google'ın rapor tanımında yapılandırılan göreli aralıkTHIS_MONTH_TO_DATEiçin hesapladığı sabit tarih aralığını içerir.
Sonraki adımlar
- Curation Partners API ile rapor oluşturma ve değiştirme hakkında bilgi edinin.
- Seçim İş Ortağı API'si ile mevcut raporları nasıl görüntüleyeceğinizi öğrenin.
- Curation Partners API ile rapor çalıştırmayı öğrenin.