ה-API של Merchant מאפשר לכם לעקוב אחרי סטטוס העיבוד של מקורות נתונים שמבוססים על קבצים, ולהפעיל באופן ידני אחזור מיידי שלהם.
קבלת סטטוס העלאת הקובץ האחרון
כדי לבדוק את הסטטוס של הניסיון האחרון לעיבוד של מקור נתונים מבוסס-קובץ, משתמשים בשיטה 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 '{}'