Nhóm địa điểm kinh doanh trên Google giống như một thư mục dùng chung cho các vị trí của bạn. Nhóm địa điểm kinh doanh là một cách an toàn để chia sẻ quyền quản lý các vị trí của bạn với nhiều người dùng. Để biết thêm thông tin, hãy xem bài viết Giới thiệu về nhóm địa điểm kinh doanh.
Trước khi tải kho hàng tại địa phương lên, hãy chỉ định nhóm địa điểm kinh doanh mà tài khoản Merchant Center của bạn sẽ chịu trách nhiệm. Bạn có thể lấy danh sách các nhóm địa điểm kinh doanh đủ điều kiện từ Trang doanh nghiệp bằng Merchant API, nhưng để có quyền truy cập, trước tiên bạn cần liên kết tài khoản của mình với một Trang doanh nghiệp.
Yêu cầu cấp quyền truy cập vào một Trang doanh nghiệp
Để có quyền truy cập vào một Trang doanh nghiệp, hãy sử dụng phương thức gbpAccounts.LinkGbpAccount:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/gbpAccounts:linkGbpAccount
{
"gbpEmail": "admin@example.com",
}
Thay thế nội dung sau:
ACCOUNT_ID: giá trị nhận dạng duy nhất của tài khoản Merchant CenterGBP_EMAIL: email của quản trị viên cho Trang doanh nghiệp
Khi gọi phương thức này, dịch vụ sẽ gửi email cho quản trị viên được chỉ định, yêu cầu họ chấp nhận hoặc từ chối yêu cầu truy cập. Nếu quản trị viên không phản hồi trong vòng 7 ngày, yêu cầu sẽ tự động hết hạn.
Liệt kê các nhóm địa điểm kinh doanh hiện có
Sau khi quản trị viên phê duyệt yêu cầu, bạn có thể kiểm tra các nhóm doanh nghiệp hiện có bằng phương thức gbpAccounts.List.
Sau đây là yêu cầu mẫu và phản hồi thành công:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/gbpAccounts
Response:
200 OK
{
"gbpAccounts": [
{
"name": "accounts/{ACCOUNT_ID}/gbpAccounts/12345",
"gbpAccountId": 12345,
"type": USER,
"gbpAccountName": "admin@example.com",
"listingCount": 15
}, {
"name": "accounts/{ACCOUNT_ID}/gbpAccounts/67890",
"gbpAccountId": 67890,
"type": BUSINESS_ACCOUNT,
"gbpAccountName": "Google My Business Account",
"listingCount": 23
}
],
"nextPageToken": 50
}
Bạn có thể sử dụng mã mẫu này để truy xuất tất cả các nhóm doanh nghiệp đủ điều kiện:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.GbpAccount;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceClient.ListGbpAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.ListGbpAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to get the list of GBP accounts for a given Merchant Center account
*/
public class ListGbpAccountsSample {
public static void listGbpAccounts(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
GbpAccountsServiceSettings gbpAccountsServiceSettings =
GbpAccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String accountId = config.getAccountId().toString();
// Creates parent to identify the omnichannelSetting from which to list all Lfp Providers.
String parent = AccountName.newBuilder().setAccount(accountId).build().toString();
// Calls the API and catches and prints any network failures/errors.
try (GbpAccountsServiceClient gbpAccountsServiceClient =
GbpAccountsServiceClient.create(gbpAccountsServiceSettings)) {
ListGbpAccountsRequest request =
ListGbpAccountsRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list GBP accounts request:");
ListGbpAccountsPagedResponse response = gbpAccountsServiceClient.listGbpAccounts(request);
int count = 0;
// Iterates over all the entries in the response.
for (GbpAccount gbpAccount : response.iterateAll()) {
System.out.println(gbpAccount);
count++;
}
System.out.println(String.format("The following count of elements were returned: %d", count));
} catch (Exception e) {
System.out.println("An error has occured: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
listGbpAccounts(config);
}
}
PHP
require_once __DIR__ . '/../../../../vendor/autoload.php';
require_once __DIR__ . '/../../../Authentication/Authentication.php';
require_once __DIR__ . '/../../../Authentication/Config.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\GbpAccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GbpAccount;
use Google\Shopping\Merchant\Accounts\V1\ListGbpAccountsRequest;
/**
* This class demonstrates how to get the list of GBP accounts for a given
* Merchant Center account.
*/
class ListGbpAccountsSample
{
/**
* A helper function to create the parent string.
*
* @param string $accountId The account ID.
*
* @return string The parent has the format: `accounts/{account_id}`
*/
private static function getParent(string $accountId): string
{
return sprintf('accounts/%s', $accountId);
}
/**
* Retrieves the list of GBP accounts for a given Merchant Center account.
*
* @param array $config The configuration data for authentication and account ID.
*
* @return void
*/
public static function listGbpAccounts(array $config): 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.
$gbpAccountsServiceClient = new GbpAccountsServiceClient($options);
// Creates the parent account name to identify the merchant.
$parent = self::getParent($config['accountId']);
// Creates the request to list GBP accounts.
$request = new ListGbpAccountsRequest([
'parent' => $parent
]);
// Calls the API and catches and prints any network failures/errors.
try {
printf("Sending list GBP accounts request:%s", PHP_EOL);
$response = $gbpAccountsServiceClient->listGbpAccounts($request);
$count = 0;
// Iterates over all the GBP accounts in the response and prints them.
foreach ($response->iterateAllElements() as $gbpAccount) {
/** @var GbpAccount $gbpAccount */
print_r($gbpAccount->serializeToJsonString());
$count++;
}
printf(
"The following count of elements were returned: %d%s",
$count,
PHP_EOL
);
} catch (ApiException $e) {
printf("An error has occurred: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
self::listGbpAccounts($config);
}
}
// Runs the script.
$sample = new ListGbpAccountsSample();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GbpAccountsServiceClient
from google.shopping.merchant_accounts_v1 import ListGbpAccountsRequest
# Gets the merchant account ID from the configuration file.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# Creates the parent resource name string.
_PARENT = f"accounts/{_ACCOUNT}"
def list_gbp_accounts() -> None:
"""Lists the Google Business Profile accounts for a given Merchant Center account."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = GbpAccountsServiceClient(credentials=credentials)
# Creates the request.
request = ListGbpAccountsRequest(parent=_PARENT)
# Makes the request and catches and prints any error messages.
try:
print("Sending list GBP accounts request:")
# Makes the request and retrieves the list of GBP accounts.
response = client.list_gbp_accounts(request=request)
count = 0
# Iterates over all the GBP accounts in the response and prints them.
for gbp_account in response:
print(gbp_account)
count += 1
print(f"The following count of elements were returned: {count}")
except RuntimeError as e:
print("An error has occured: ")
print(e)
if __name__ == "__main__":
list_gbp_accounts()
Chỉ định nhóm địa điểm kinh doanh cho tài khoản Merchant Center
nhóm địa điểm kinh doanh hiện có, bạn có thể liên kết nhóm địa điểm kinh doanh đó với tài khoản Merchant Center. Ví dụ: nếu muốn chọn nhóm địa điểm kinh doanh có mã tài khoản GBP là 12345 (trả về từ bước trước), bạn có thể sử dụng AccountServices.proposeAccountService:
POST
https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/services:propose
{
provider: "providers/GOOGLE_BUSINESS_PROFILE",
account_service: {
external_account_id: "12345",
local_listing_management {}
}
}
Xin lưu ý rằng trường provider phải là providers/GOOGLE_BUSINESS_PROFILE. Bạn phải đặt một trường LocalListingManagement trống trong yêu cầu.
Gửi dữ liệu sản phẩm và kho hàng
Giờ đây, sau khi liên kết tài khoản Merchant Center với một nhóm địa điểm kinh doanh, bạn có thể tải dữ liệu sản phẩm và kho hàng tại địa phương lên. Để biết thêm thông tin, hãy xem