تشغيل التقارير

يؤدي تنفيذ تقرير إلى بدء تنفيذ نموذج Report حالي لإنتاج بيانات الأداء لحسابك على Curation.

يشرح هذا الدليل كيفية إنتاج تقرير يصف أداء حسابك على Curation باستخدام Curation Partners API لـ تشغيل نموذج Report.

قبل البدء

قبل المتابعة، عليك إكمال ما يلي:

بدء تنفيذ تقرير

لتنفيذ تقرير حالي، استخدِم الـ curators.reports.run طريقة.

يُجري المثال التالي طلب POST لبدء تنفيذ تقرير:

راحة

طلب

curl --request POST \
  'https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/reports/123456789:run' \
  --header 'Authorization: Bearer ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{}' \
  --compressed

غيِّر القيم في السلسلة على الشكل التالي:

  • ACCOUNT_ID: رقم تعريف حسابك
  • ACCESS_TOKEN: رمز الدخول

الردّ

{
  "name": "curators/ACCOUNT_ID/reports/123456789/operations/10486370264",
  "done": false,
  "metadata": {
    "@type": "type.googleapis.com/google.ads.curationpartners.v1.RunReportMetadata"
  }
}

جافا

/*
 * 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;

import com.google.api.services.curationpartners.v1.CurationPartners;
import com.google.api.services.curationpartners.v1.model.Operation;
import com.google.api.services.curationpartners.v1.model.RunReportRequest;
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 RunReport {

  /**
   * Executes the run operation for a report.
   *
   * @param curationPartnersClient the initialized Curation Partners API client.
   * @param accountId the account ID of the curator that created the report.
   * @param reportId the resource ID of the report to run.
   * @throws IOException if the API returns an error.
   */
  public static void execute(
      CurationPartners curationPartnersClient, Long accountId, String reportId)
      throws IOException {
    String name = String.format("curators/%s/reports/%s", accountId, reportId);

    System.out.printf("Running report with name \"%s\".%n", name);

    RunReportRequest requestBody = new RunReportRequest();

    // Run the specified report to start an asynchronous operation.
    Operation operation =
        curationPartnersClient
            .curators()
            .reports()
            .run(name, requestBody)
            .execute();

    System.out.println("Successfully initiated report run operation:");
    Utils.jsonPrettyPrint(operation);
  }

  /**
   * Creates and configures the ArgumentParser for this sample.
   *
   * @return the configured ArgumentParser.
   */
  private static ArgumentParser createArgumentParser() {
    ArgumentParser parser =
        ArgumentParsers.newFor("RunReport")
            .build()
            .defaultHelp(true)
            .description("Runs a specified report asynchronously, returning an Operation " +
                "that can be used to track its progress.");

    // Required arguments.
    parser
        .addArgument("-a", "--account_id")
        .help("The account ID of the curator that created the report.")
        .required(true)
        .type(Long.class);
    parser
        .addArgument("-r", "--report_id")
        .help("The resource ID of the report to run.")
        .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"));
    } catch (IOException ex) {
      System.out.printf("Curation Partners API returned error response:%n%s", ex);
      System.exit(1);
    }
  }
}

إنّ تنفيذ تقرير هو عملية غير متزامنة تستغرق وقتًا طويلاً. عند استدعاء طريقة run، تردّ Curation Partners API باستخدام مورد Operation. يحدّد حقل name في العملية عملية التنفيذ ويكون بالتنسيق التالي:

curators/ACCOUNT_ID/reports/REPORT_ID/operations/OPERATION_ID

يحتوي كائن Operation الذي يتم عرضه على ما يلي:

  • name: الاسم الذي يحدّده الخادم للعملية الطويلة الأمد
  • metadata: معلومات اختيارية عن التقدّم خاصة بالخدمة قد لا تتم تعبئة حقل metadata في كائن Operation الذي تتلقّاه في الردّ curators.reports.run.

بعد بدء تنفيذ تقرير، لا يمكنك الاطّلاع على نتائج التقرير إلى أن تكون قيمة حقل done في العملية هي true. يختلف طول المدة التي يستغرقها تنفيذ التقرير استنادًا إلى مدى تعقيد التقرير.

الخطوات التالية