این راهنما نحوه مدیریت تنظیمات برگزیده اعلان ایمیل حساب Merchant Center خود را برای ایمیل های غیر اجباری با استفاده از Merchant API توضیح می دهد.
تنظیمات برگزیده ایمیل شما مختص هر حساب Merchant Center است که به آن دسترسی دارید. اگر چندین حساب را مدیریت می کنید، می توانید تنظیمات برگزیده متفاوتی را برای هر یک از آنها تنظیم کنید. Merchant API به شما امکان می دهد تنظیمات فعلی خود را بازیابی و آنها را به روز کنید. برای اطلاعات بیشتر در مورد مدیریت تنظیمات برگزیده ایمیل از طریق رابط Merchant Center، به تغییر تنظیمات برگزیده ایمیل Merchant Center مراجعه کنید.
Merchant API فقط از مدیریت تنظیمات برگزیده برای ایمیلهای «اخبار و نکات» پشتیبانی میکند.
ملاحظات خاص
- فقط کاربر احراز هویت شده : فقط میتوانید تنظیمات برگزیده ایمیل را برای حساب کاربری که برای تماس API احراز هویت شده است دریافت یا بهروزرسانی کنید. شما باید آدرس ایمیل این کاربر را در مسیر درخواست مشخص کنید (مثلا
user@email.com
) یا از نام مستعارme
استفاده کنید. - حسابهای پیشرفته : اگر یک کاربر حساب پیشرفته هستید، تنظیمات برگزیده ایمیل شما در سطح حساب پیشرفته تنظیم میشود و برای خود حساب پیشرفته و همه حسابهای فرعی آن اعمال میشود. هنگام استفاده از API، کاربران حساب پیشرفته باید شناسه حساب پیشرفته را برای مدیریت تنظیمات برگزیده خود مشخص کنند.
- حسابهای سرویس : حسابهای خدماتی اعلانها را دریافت نمیکنند، حتی اگر تنظیمات برگزیده ایمیل برای آنها تنظیم شده باشد.
- وضعیت
UNCONFIRMED
: حالت انتخابUNCONFIRMED
برای اولویت ایمیل فقط توسط سرور قابل تنظیم است. شما نمی توانید با استفاده از API ترجیحی را رویUNCONFIRMED
تنظیم کنید. تلاش برای تنظیم این اولویت منجر به خطا می شود. حالتUNCONFIRMED
نشان می دهد که یک ایمیل تأیید برای کاربری ارسال شده است که در آن شرکت کرده است، اما آنها هنوز روی پیوند تأیید کلیک نکرده اند.
تنظیمات برگزیده ایمیل Merchant Center خود را بررسی کنید
برای مشاهده تنظیمات اعلان ایمیل فعلی خود برای یک حساب Merchant Center خاص، از روش GetEmailPreferences
استفاده کنید. باید شناسه حساب Merchant Center خود را ارائه دهید و از آدرس ایمیل کاربر استفاده کنید یا از نام مستعار me
برای نشان دادن کاربر تأیید شده استفاده کنید.
این درخواست منبع EmailPreferences
را بازیابی میکند، که وضعیت انتخاب شما را برای دستههای اعلانهای موجود، مانند news_and_tips
نشان میدهد.
GET https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences
یک درخواست موفق، منبع EmailPreferences
را که تنظیمات فعلی شما را نشان می دهد، برمی گرداند.
نمونه پاسخ:
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_IN"
}
این نمونه کد نحوه بازیابی تنظیمات برگزیده ایمیل برای حساب Merchant Center خود را نشان می دهد.
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferences;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.GetEmailPreferencesRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to get the email preferences of a Merchant Center account. */
public class GetEmailPreferencesSample {
public static void getEmailPreferences(Config config, String email) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
EmailPreferencesServiceSettings emailPreferencesServiceSettings =
EmailPreferencesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates EmailPreferences name to identify the EmailPreferences.
String name =
EmailPreferencesName.newBuilder()
.setAccount(config.getAccountId().toString())
.setEmail(email)
.build()
.toString();
// Calls the API and catches and prints any network failures/errors.
try (EmailPreferencesServiceClient emailPreferencesServiceClient =
EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)) {
// The name has the format: accounts/{account}/users/{user}/emailPreferences
GetEmailPreferencesRequest request =
GetEmailPreferencesRequest.newBuilder().setName(name).build();
System.out.println("Sending get EmailPreferences request:");
EmailPreferences response = emailPreferencesServiceClient.getEmailPreferences(request);
System.out.println("Retrieved EmailPreferences below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The email address of this user. If you want to get the user information
// Of the user making the Content API request, you can also use "me" instead
// Of an email address.
String email = "testUser@gmail.com";
// String email = "me";
getEmailPreferences(config, email);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1beta\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\GetEmailPreferencesRequest;
/**
* This class demonstrates how to get the email preferences of a Merchant Center account.
*/
class GetEmailPreferences
{
/**
* Gets the email preferences of a Merchant Center account.
*
* @param array $config
* The configuration data used for authentication and getting the acccount ID.
* @param string $email The email address of this user. If you want to get the user information
* of the user making the Merchant API request, you can also use "me" instead
* of an email address.
*
* @return void
*/
public static function getEmailPreferencesSample($config, $email): 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.
$emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);
// Creates EmailPreferences name to identify the EmailPreferences.
// The name has the format: accounts/{account}/users/{user}/emailPreferences
$name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";
// Calls the API and catches and prints any network failures/errors.
try {
$request = (new GetEmailPreferencesRequest())
->setName($name);
print "Sending get EmailPreferences request:\n";
$response = $emailPreferencesServiceClient->getEmailPreferences($request);
print "Retrieved EmailPreferences below\n";
print_r($response);
} catch (ApiException $e) {
print $e->getMessage();
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
// The email address of this user. If you want to get the user information
// Of the user making the Merchant API request, you can also use "me" instead
// Of an email address.
// $email = "testUser@gmail.com";
$email = "me";
self::getEmailPreferencesSample($config, $email);
}
}
// Run the script
$sample = new GetEmailPreferences();
$sample->callSample();
پایتون
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1beta import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1beta import GetEmailPreferencesRequest
_ACCOUNT = configuration.Configuration().read_merchant_info()
def get_email_preferences(email_address):
"""Gets the email preferences of a Merchant Center account."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = EmailPreferencesServiceClient(credentials=credentials)
# Creates EmailPreferences name to identify the EmailPreferences.
name = (
"accounts/" + _ACCOUNT + "/users/" + email_address + "/emailPreferences"
)
# Creates the request.
request = GetEmailPreferencesRequest(name=name)
# Makes the request and catches and prints any error messages.
try:
response = client.get_email_preferences(request=request)
print("Retrieved EmailPreferences below")
print(response)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# The email address of this user. If you want to get the user information
# Of the user making the Content API request, you can also use "me" instead
# Of an email address.
# email = "testUser@gmail.com"
email = "me"
get_email_preferences(email)
CURL
curl --location \
'https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences' \
--header 'Authorization: Bearer <API_TOKEN>'
تنظیمات برگزیده ایمیل Merchant Center خود را تغییر دهید
برای تغییر تنظیمات برگزیده اعلان ایمیل خود، مانند شرکت در ایمیلهای «اخبار و نکات» یا حذف، از روش UpdateEmailPreferences
استفاده کنید.
در درخواست خود، شناسه حساب Merchant Center را ارائه می دهید و از آدرس ایمیل خود (یا نام مستعار me
) برای ایمیل کاربر استفاده می کنید. بدنه درخواست باید شامل شی EmailPreferences
با انتخاب opt_in_state
برای قسمت news_and_tips
باشد. همچنین باید news_and_tips
در پارامتر query update_mask
مشخص کنید تا نشان دهید کدام اولویت را تغییر می دهید.
این اقدام تنظیمات برگزیده ایمیل را برای کاربر احراز هویت شده برای حساب Merchant Center مشخص شده به روز می کند. برای مثال، تنظیم news_and_tips
روی OPTED_OUT
شما را از دریافت ایمیلهای «اخبار و نکات» برای آن حساب بازمیدارد.
PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences?update_mask=news_and_tips
بار نمونه درخواست (برای انصراف از "اخبار و نکات"):
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_OUT"
}
یک درخواست موفق، منبع EmailPreferences
به روز شده را برمی گرداند.
نمونه پاسخ:
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_OUT"
}
این نمونه کد نحوه بهروزرسانی تنظیمات برگزیده ایمیل برای حساب Merchant Center خود را نشان میدهد، برای مثال برای شرکت در ایمیلهای "اخبار و نکات".
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferences;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferences.OptInState;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1beta.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.UpdateEmailPreferencesRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service
* only permits retrieving and updating email preferences for the authenticated user.
*/
public class UpdateEmailPreferencesSample {
public static void updateEmailPreferences(Config config, String email) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
EmailPreferencesServiceSettings emailPreferencesServiceSettings =
EmailPreferencesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates EmailPreferences name to identify EmailPreferences.
String name =
EmailPreferencesName.newBuilder()
.setAccount(config.getAccountId().toString())
.setEmail(email)
.build()
.toString();
// Create a EmailPreferences with the updated fields.
EmailPreferences emailPreferences =
EmailPreferences.newBuilder().setName(name).setNewsAndTips(OptInState.OPTED_IN).build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("news_and_tips").build();
try (EmailPreferencesServiceClient emailPreferencesServiceClient =
EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)) {
UpdateEmailPreferencesRequest request =
UpdateEmailPreferencesRequest.newBuilder()
.setEmailPreferences(emailPreferences)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending Update EmailPreferences request");
EmailPreferences response = emailPreferencesServiceClient.updateEmailPreferences(request);
System.out.println("Updated EmailPreferences Name below");
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The email address of this user. If you want to get the user information
// Of the user making the Content API request, you can also use "me" instead
// Of an email address.
// String email = "testUser@gmail.com";
String email = "me";
updateEmailPreferences(config, email);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1beta\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\EmailPreferences;
use Google\Shopping\Merchant\Accounts\V1beta\EmailPreferences\OptInState;
use Google\Shopping\Merchant\Accounts\V1beta\UpdateEmailPreferencesRequest;
/**
* This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service
* only permits retrieving and updating email preferences for the authenticated user.
*/
class UpdateEmailPreferences
{
/**
* Updates email preferences to OPT_IN to News and Tips.
*
* @param array $config
* The configuration data used for authentication and getting the acccount ID.
* @param string $email The email address of this user. If you want to get the user information
* of the user making the Merchant API request, you can also use "me" instead
* of an email address.
*
* @return void
*/
public static function updateEmailPreferencesSample($config, $email): 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.
$emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);
// Creates EmailPreferences name to identify the EmailPreferences.
// The name has the format: accounts/{account}/users/{user}/emailPreferences
$name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";
// Create a EmailPreferences with the updated fields.
$emailPreferences = (new EmailPreferences())
->setName($name)
->setNewsAndTips(OptInState::OPTED_OUT);
$fieldMask = (new FieldMask())
->setPaths(['news_and_tips']);
try {
$request = (new UpdateEmailPreferencesRequest())
->setEmailPreferences($emailPreferences)
->setUpdateMask($fieldMask);
print "Sending Update EmailPreferences request\n";
$response = $emailPreferencesServiceClient->updateEmailPreferences($request);
print "Updated EmailPreferences Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
// The email address of this user. If you want to get the user information
// Of the user making the Merchant API request, you can also use "me" instead
// Of an email address.
// $email = "testUser@gmail.com";
$email = "me";
self::updateEmailPreferencesSample($config, $email);
}
}
// Run the script
$sample = new UpdateEmailPreferences();
$sample->callSample();
پایتون
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1beta import EmailPreferences
from google.shopping.merchant_accounts_v1beta import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1beta import UpdateEmailPreferencesRequest
FieldMask = field_mask_pb2.FieldMask
_ACCOUNT = configuration.Configuration().read_merchant_info()
def update_email_preferences(email_address):
"""Updates a EmailPreferences to OPT_IN to News and Tips."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = EmailPreferencesServiceClient(credentials=credentials)
# Creates EmailPreferences name to identify EmailPreferences.
name = (
"accounts/" + _ACCOUNT + "/users/" + email_address + "/emailPreferences"
)
# Create a EmailPreferences with the updated fields.
email_preferences = EmailPreferences(
name=name, news_and_tips=EmailPreferences.OptInState.OPTED_IN
)
# Create field mask
field_mask = FieldMask(paths=["news_and_tips"])
# Creates the request.
request = UpdateEmailPreferencesRequest(
email_preferences=email_preferences, update_mask=field_mask
)
# Makes the request and catches and prints any error messages.
try:
response = client.update_email_preferences(request=request)
print("Updated EmailPreferences Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# The email address of this user. If you want to get the user information
# of the user making the Content API request, you can also use "me" instead
# of an email address.
# email = "testUser@gmail.com"
email = "me"
update_email_preferences(email)
CURL
curl --location --request PATCH \
'https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences?update_mask=news_and_tips' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_TOKEN>' \
--data '{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_IN"
}'