ตรวจสอบและทริกเกอร์การประมวลผลแหล่งข้อมูลที่อิงตามไฟล์

Merchant API ช่วยให้คุณตรวจสอบสถานะการประมวลผลของแหล่งข้อมูลที่อิงตามไฟล์ และเรียกข้อมูลด้วยตนเองได้ทันที

ดูสถานะการอัปโหลดไฟล์ล่าสุด

หากต้องการตรวจสอบสถานะของความพยายามในการประมวลผลครั้งล่าสุดสำหรับแหล่งข้อมูลที่อิงตามไฟล์ ให้ใช้วิธีfileUploads.get คุณต้องใช้นามแฝง latest สำหรับ fileuploadId เพื่อดึงข้อมูล สถานะของการอัปโหลดหรือการดึงข้อมูลล่าสุด

เมธอดนี้จะแสดงรายละเอียดเกี่ยวกับรายการต่อไปนี้

  • สถานะการประมวลผล (เช่น SUCCEEDED, FAILED, IN_PROGRESS)
  • จำนวนรายการที่ประมวลผล
  • ปัญหาที่พบ
  • การประทับเวลาอัปโหลด
GET https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}/fileUploads/latest

คำขอที่สำเร็จจะแสดงทรัพยากร FileUpload ที่มีรายละเอียดสถานะ

นี่คือตัวอย่างการตอบกลับสำหรับการอัปโหลดที่สำเร็จแต่มีคำเตือน

{
  "name": "accounts/123456789/dataSources/111222333/fileUploads/latest",
  "dataSourceId": "111222333",
  "processingState": "SUCCEEDED",
  "issues": [
    {
      "title": "Missing recommended attribute",
      "description": "Products are missing a recommended attribute 'description'.",
      "code": "validation/missing_recommended_attribute",
      "count": "5",
      "severity": "WARNING",
      "documentationUri": "https://support.google.com/merchants/answer/6324468"
    }
  ],
  "itemsTotal": "100",
  "itemsCreated": "90",
  "itemsUpdated": "10",
  "uploadTime": "2023-10-26T10:30:00Z"
}

นี่คือตัวอย่างการตอบกลับสำหรับการอัปโหลดที่กำลังดำเนินการ

{
  "name": "accounts/123456789/dataSources/111222333/fileUploads/latest",
  "dataSourceId": "111222333",
  "processingState": "IN_PROGRESS",
  "uploadTime": "2023-10-26T11:00:00Z"
}

นี่คือตัวอย่างการตอบกลับสำหรับการอัปโหลดที่ไม่สำเร็จ

{
  "name": "accounts/123456789/dataSources/111222333/fileUploads/latest",
  "dataSourceId": "111222333",
  "processingState": "FAILED",
  "issues": [
    {
      "title": "Invalid file format",
      "description": "The uploaded file is not a valid XML or CSV file.",
      "code": "validation/invalid_file_format",
      "count": "1",
      "severity": "ERROR",
      "documentationUri": "https://support.google.com/merchants/answer/188494"
    }
  ],
  "uploadTime": "2023-10-26T11:15:00Z"
}

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรับสถานะการอัปโหลดไฟล์ล่าสุด โดยใช้เมธอด fileUploads.get ที่มีนามแฝง latest

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.FileUpload;
import com.google.shopping.merchant.datasources.v1beta.FileUploadName;
import com.google.shopping.merchant.datasources.v1beta.FileUploadsServiceClient;
import com.google.shopping.merchant.datasources.v1beta.FileUploadsServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.GetFileUploadRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to get the latest data source file upload. */
public class GetFileUploadSample {

  public static void getFileUpload(Config config, String datasourceId) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    FileUploadsServiceSettings fileUploadsServiceSettings =
        FileUploadsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates FileUpload name with datasource id to identify datasource.
    String name =
        FileUploadName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setDatasource(datasourceId)
            .setFileupload("latest")
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    try (FileUploadsServiceClient fileUploadsServiceClient =
        FileUploadsServiceClient.create(fileUploadsServiceSettings)) {

      // The name has the format: accounts/{account}/datasources/{datasource}/fileUploads/latest
      GetFileUploadRequest request = GetFileUploadRequest.newBuilder().setName(name).build();

      System.out.println("Sending get FileUpload request:");
      FileUpload response = fileUploadsServiceClient.getFileUpload(request);

      System.out.println("Retrieved FileUpload below");
      System.out.println(response);
      //   return response;
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // An ID assigned to a datasource by Google.
    String datasourceId = "123456789";

    getFileUpload(config, datasourceId);
  }
}

cURL

curl \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}/fileUploads/latest" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json"

ดึงข้อมูลจากแหล่งข้อมูลทันที

วิธีนี้ช่วยให้คุณขอให้ดึงข้อมูลและประมวลผลแหล่งข้อมูลที่อิงตามไฟล์ได้ทันทีโดยใช้เมธอด dataSources.fetch ซึ่งจะเป็นประโยชน์ในกรณีที่คุณอัปเดตไฟล์ต้นฉบับและต้องการให้ Google ดึงข้อมูลไฟล์ดังกล่าวเร็วกว่าการดึงข้อมูลที่กำหนดเวลาไว้ครั้งถัดไป

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}:fetch

คำขอที่สำเร็จในการเริ่มการดึงข้อมูลจะแสดงการตอบกลับที่ว่างเปล่าเนื่องจาก การประมวลผลจริงเกิดขึ้นแบบไม่พร้อมกัน คุณสามารถตรวจสอบผลลัพธ์ได้โดยใช้fileUploads.getวิธีการที่อธิบายไว้ก่อนหน้านี้

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้เมธอด dataSources.fetch เพื่อขอให้ดึงข้อมูลแหล่งข้อมูลที่ระบุทันที

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.DataSourceName;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.FetchDataSourceRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to fetch a specific FileInput DataSource for a given Merchant Center
 * account.
 */
public class FetchFileDataSourceSample {

  public static void fetchDataSource(Config config, String dataSourceId) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    DataSourcesServiceSettings dataSourcesServiceSettings =
        DataSourcesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates datasource name to identify datasource.
    String name =
        DataSourceName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setDatasource(dataSourceId)
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    try (DataSourcesServiceClient dataSourcesServiceClient =
        DataSourcesServiceClient.create(dataSourcesServiceSettings)) {

      // The name has the format: accounts/{account}/datasources/{datasource}
      FetchDataSourceRequest request = FetchDataSourceRequest.newBuilder().setName(name).build();

      System.out.println("Sending FETCH DataSource request:");
      // Fetch works ONLY for FileInput DataSource type.
      dataSourcesServiceClient.fetchDataSource(request); // No response returned on success

      System.out.println("Successfully fetched DataSource.");

    } catch (Exception e) {
      System.out.println(e);
      System.exit(1);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    String datasourceId = "<DATASOURCE_ID>"; // Replace with your FileInput DataSource ID.

    fetchDataSource(config, datasourceId);
  }
}

cURL

curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}:fetch" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{}'