Merchant API מאפשר לכם לעקוב אחרי סטטוס העיבוד של מקורות נתונים מבוססי-קובץ ולהפעיל באופן ידני אחזור מיידי שלהם.
קבלת סטטוס ההעלאה העדכני של הקובץ
כדי לבדוק את הסטטוס של הניסיון האחרון לעיבוד של מקור נתונים מבוסס-קובץ, משתמשים בשיטה fileUploads.get. כדי לאחזר את הסטטוס של ההעלאה או האחזור האחרונים, צריך להשתמש בכינוי latest עבור fileuploadId.
השיטה הזו מחזירה פרטים על:
- מצב העיבוד (לדוגמה,
SUCCEEDED,FAILED,IN_PROGRESS) - מספר הפריטים שעובדו
- בעיות שנתקלתם בהן
- חותמת הזמן של ההעלאה
GET https://merchantapi.googleapis.com/datasources/v1/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.v1.FileUpload;
import com.google.shopping.merchant.datasources.v1.FileUploadName;
import com.google.shopping.merchant.datasources.v1.FileUploadsServiceClient;
import com.google.shopping.merchant.datasources.v1.FileUploadsServiceSettings;
import com.google.shopping.merchant.datasources.v1.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/v1/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/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}:fetch
בקשה מוצלחת להפעלת אחזור מחזירה תגובה ריקה, כי העיבוד בפועל מתבצע באופן אסינכרוני. אפשר לעקוב אחרי התוצאה באמצעות ה-method fileUploads.get שמתוארת למעלה.
בדוגמאות הקוד הבאות אפשר לראות איך להשתמש בשיטה dataSources.fetch כדי לבקש אחזור מיידי של מקור נתונים מסוים.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1.DataSourceName;
import com.google.shopping.merchant.datasources.v1.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1.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/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}:fetch" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{}'