میتوانید از زیرمیانای برنامهسازی کاربردی «موجودیها» برای بهروز نگه داشتن اطلاعات فروشگاه برای محصولات محلیتان استفاده کنید. این شامل بهروزرسانی price و availability،
و برداشتن فروشگاههایی میشود که محصول دیگر در آنها فروخته نمیشود.
اگر ارائهدهنده طرف سوم هستید، میتوانید از میانای برنامهسازی کاربردی فرعی «موجودیها» برای ایجاد رابطی برای کسبوکارهایتان استفاده کنید تا موجودی محصولاتشان در فروشگاه را بهروز کنند.
بهروزرسانی قیمت و دردسترس بودن براساس فروشگاه
از
localInventories.insert
برای بهروزرسانی اطلاعات درون فروشگاه برای محصول استفاده کنید.
این تماس جایگزین
LocalInventory
منبع کامل میشود، بنابراین مطمئن شوید همه فیلدها را اضافه کنید. برای نمونه کد و جزئیات بیشتر، به افزودن اطلاعات فروشگاه به
محصولات محلی مراجعه کنید.
مشاهده فروشگاههای موجود
این بخش توضیح میدهد که چگونه فروشگاههای مرتبط با محصول یا حساب را مشاهده کنید.
براساس محصول
از
localInventories.list
برای فهرست کردن همه موجودیهای محلی متصل به product خاص در
حسابتان استفاده کنید. این تماس منابع کامل LocalInventory را برمیگرداند. از store_code
مشخصه برای شناسایی هر فروشگاه استفاده کنید.
در اینجا نمونهای ارائه شده است که میتوانید از آن برای فهرست کردن موجودیهای محلی برای یک محصول استفاده کنید:
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.ListLocalInventoriesRequest;
import com.google.shopping.merchant.inventories.v1.LocalInventory;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceClient.ListLocalInventoriesPagedResponse;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the Local inventories on a given product */
public class ListLocalInventoriesSample {
private static String getParent(String accountId, String productId) {
return String.format("accounts/%s/products/%s", accountId, productId);
}
public static void listLocalInventories(Config config, String productId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
LocalInventoryServiceSettings localInventoryServiceSettings =
LocalInventoryServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String parent = getParent(config.getAccountId().toString(), productId);
try (LocalInventoryServiceClient localInventoryServiceClient =
LocalInventoryServiceClient.create(localInventoryServiceSettings)) {
// The parent product has the format: accounts/{account}/products/{product}
ListLocalInventoriesRequest request =
ListLocalInventoriesRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list Local inventory request:");
ListLocalInventoriesPagedResponse response =
localInventoryServiceClient.listLocalInventories(request);
int count = 0;
// Iterates over all rows in all pages and prints the Local inventory
// in each row.
for (LocalInventory element : response.iterateAll()) {
System.out.println(element);
count++;
}
System.out.print("The following count of elements were returned: ");
System.out.println(count);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a product by Google. In the format
// contentLanguage~feedLabel~offerId
String productId = "en~label~1111111111";
listLocalInventories(config, productId);
}
}
cURL
curl --location
'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/{en~US~12345}/localInventories' \
--header 'Authorization: Bearer {API_TOKEN}' \
PHP
use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Shopping\Merchant\Inventories\V1\LocalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\LocalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\ListLocalInventoriesRequest;
/**
* Class to list the `LocalInventory` resources for the given product in your
* merchant account. The response might contain fewer items than specified by
* `pageSize`. If `pageToken` was returned in previous request, it can be
* used to obtain additional results.
*
* `LocalInventory` resources are listed per product for a given account.
*/
class ListLocalInventories
{
// ENSURE you fill in the merchant account and product ID for the sample to
// work.
private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
/**
* Lists all the local inventories of a given product.
*
* @param string $parent The `name` of the parent product to list `LocalInventory`
* resources for.
* Format: `accounts/{account}/products/{product}`
*/
function listLocalInventoriesSample(string $parent): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$localInventoryServiceClient = new LocalInventoryServiceClient($options);
// Prepare the request message.
$request = (new ListLocalInventoriesRequest())
->setParent($parent);
// Calls the API and catches and prints any network failures/errors.
try {
// Page size is set to the default value. If you are returned more
// responses than your page size, this code will automatically
// re-call the service with the `pageToken` until all responses
// are returned.
$parameters = ['pageSize' => 25000];
/** @var PagedListResponse $response */
$response =
$localInventoryServiceClient->listLocalInventories($request, $parameters);
/** @var LocalInventory $element */
foreach ($response as $element) {
printf('LocalInventory data: %s%s', $element->serializeToJsonString(), PHP_EOL);
}
} catch (ApiException $ex) {
printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
}
}
// Helper to execute the sample.
function callSample(): void
{
// Lists all the local inventories of the parent product.
$this->listLocalInventoriesSample($this::PARENT);
}
}
$sample = new ListLocalInventories();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID for the sample to
# work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
def list_local_inventories():
"""Lists the `LocalInventory` resources for the given product.
The response might contain fewer items than specified by
`pageSize`. If `pageToken` was returned in previous request, it can be
used to obtain additional results.
`LocalInventory` resources are listed per product for a given account.
"""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_inventories_v1.LocalInventoryServiceClient(
credentials=credentials)
# Creates the request.
# Page size is set to the default value.
request = merchant_inventories_v1.ListLocalInventoriesRequest(
parent=_PARENT,
page_size=25000
)
try:
# Makes the request and catch and print any error messages.
# If you are returned more responses than your page size, this code
# will automatically re-call the service with the `pageToken` until all
# responses are returned.
page_result = client.list_local_inventories(request=request)
# Print the response.
for response in page_result:
print(response)
except RuntimeError as e:
print("List failed")
print(e)
if __name__ == "__main__":
list_local_inventories()
براساس حساب
میتوانید همه فروشگاههای مرتبط با حسابتان را در نمایه کسبوکار ، یا با میانای برنامهسازی کاربردی «Google برای کسبوکار من» مشاهده کنید. نمیتوانید از Merchant API برای مشاهده یا مدیریت فروشگاهها در سطح حساب استفاده کنید، زیرا این اطلاعات از «نمایه کسبوکار» شما میآید.
برداشتن فروشگاهها
در اینجا نحوه برداشتن فروشگاههایی که دیگر در آنها محصول نمیفروشید آورده شده است:
از محصولات
اگر محصولی دیگر در فروشگاه خاصی فروخته نمیشود، باید ورودی موجودی محلی آن فروشگاه را از محصول بردارید. میتوانید از
localInventories.delete
برای برداشتن ورودی موجودی محلی خاص از محصول استفاده کنید.
در اینجا نمونهای آورده شده است که میتوانید از آن برای برداشتن ورودی موجودی محلی از محصول استفاده کنید:
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.DeleteLocalInventoryRequest;
import com.google.shopping.merchant.inventories.v1.LocalInventoryName;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a Local inventory for a given product */
public class DeleteLocalInventorySample {
public static void deleteLocalInventory(Config config, String productId, String storeCode)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
LocalInventoryServiceSettings localInventoryServiceSettings =
LocalInventoryServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name =
LocalInventoryName.newBuilder()
.setAccount(config.getAccountId().toString())
.setProduct(productId)
.setStoreCode(storeCode)
.build()
.toString();
try (LocalInventoryServiceClient localInventoryServiceClient =
LocalInventoryServiceClient.create(localInventoryServiceSettings)) {
DeleteLocalInventoryRequest request =
DeleteLocalInventoryRequest.newBuilder().setName(name).build();
System.out.println("Sending deleteLocalInventory request");
localInventoryServiceClient.deleteLocalInventory(request); // no response returned on success
System.out.println(
"Delete successful, note that it may take up to 30 minutes for the delete to update in"
+ " the system.");
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a product by Google. In the format
// contentLanguage~feedLabel~offerId
String productId = "en~label~1111111111";
// The ID uniquely identifying each region.
String storeCode = "EXAMPLE";
deleteLocalInventory(config, productId, storeCode);
}
}
cURL
curl --location --request DELETE
'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/{en~US~12345}/localInventories/123456' \
--header 'Authorization: Bearer {API_TOKEN}' \
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\Client\LocalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\DeleteLocalInventoryRequest;
/**
* Deletes the specified `LocalInventory` resource from the given product
* in your merchant account. It might take up to an hour for the
* `LocalInventory` to be deleted from the specific product.
* Once you have received a successful delete response, wait for that
* period before attempting a delete again.
*/
class DeleteLocalInventory
{
// ENSURE you fill in the merchant account, product, and region ID for the
// sample to work.
private const ACCOUNT = 'INSERT_ACCOUNT_ID_HERE';
private const PRODUCT = 'INSERT_PRODUCT_ID_HERE';
private const STORE_CODE = 'INSERT_STORE_CODE_HERE';
/**
* Deletes a specific local inventory of a given product.
*
* @param string $formattedName The name of the `LocalInventory` resource
* to delete.
* Format: `accounts/{account}/products/{product}/localInventories/{store_code}`
* Please see {@see LocalInventoryServiceClient::localInventoryName()}
* for help formatting this field.
*/
function deleteLocalInventorySample(string $formattedName): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$localInventoryServiceClient = new LocalInventoryServiceClient($options);
// Prepare the request message.
$request = (new DeleteLocalInventoryRequest())
->setName($formattedName);
// Calls the API and catches and prints any network failures/errors.
try {
$localInventoryServiceClient->deleteLocalInventory($request);
print 'Delete call completed successfully.' . PHP_EOL;
} catch (ApiException $ex) {
printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
function callSample(): void
{
// These variables are defined at the top of the file.
$formattedName = LocalInventoryServiceClient::localInventoryName(
$this::ACCOUNT,
$this::PRODUCT,
$this::STORE_CODE
);
// Deletes the specific local inventory of the parent product.
$this->deleteLocalInventorySample($formattedName);
}
}
$sample = new DeleteLocalInventory();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID and store code
# for the sample to work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_STORE_CODE = "[INSERT_STORE_CODE_HERE]"
_NAME = (f"accounts/{_ACCOUNT}/products/{_PRODUCT}/localInventories/"
f"{_STORE_CODE}")
def delete_local_inventory():
"""Deletes the specified `LocalInventory` resource from the given product.
It might take up to an hour for the `LocalInventory` to be deleted
from the specific product. Once you have received a successful delete
response, wait for that period before attempting a delete again.
"""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_inventories_v1.LocalInventoryServiceClient(
credentials=credentials)
# Creates the request.
request = merchant_inventories_v1.DeleteLocalInventoryRequest(name=_NAME)
# Makes the request and catch and print any error messages.
try:
client.delete_local_inventory(request=request)
print("Delete successful")
except RuntimeError as e:
print("Delete failed")
print(e)
if __name__ == "__main__":
delete_local_inventory()
این فراخوانی اطلاعات را فقط برای فروشگاه مشخصشده و فقط از محصول مشخصشده برمیدارد.
از حسابها
میتوانید فروشگاههایی را که دیگر محصولاتتان را در آنها نمیفروشید از حسابتان بردارید با برداشتن آنها از نمایه کسبوکار. برای اطلاعات بیشتر، به بستن یا برداشتن کسبوکار مراجعه کنید.