In dieser Anleitung wird beschrieben, wie Sie die Einstellungen für E‑Mail-Benachrichtigungen Ihres Merchant Center-Kontos für nicht obligatorische E‑Mails mithilfe der Merchant API verwalten.
Ihre E‑Mail-Einstellungen sind spezifisch für jedes Merchant Center-Konto, auf das Sie Zugriff haben. Wenn Sie mehrere Konten verwalten, können Sie für jedes Konto unterschiedliche Einstellungen festlegen. Mit der Merchant API können Sie Ihre aktuellen Einstellungen abrufen und aktualisieren. Weitere Informationen zum Verwalten von E‑Mail-Einstellungen über die Merchant Center-Benutzeroberfläche finden Sie unter E‑Mail-Einstellungen des Merchant Center-Kontos ändern.
Mit der Merchant API lassen sich nur die Einstellungen für E‑Mails mit Neuigkeiten und Tipps verwalten.
Besonderheiten
- Nur authentifizierte Nutzer: Sie können nur die E‑Mail-Einstellungen
für das Nutzerkonto abrufen oder aktualisieren, das für den API-Aufruf authentifiziert ist. Sie müssen die E‑Mail-Adresse dieses Nutzers im Anfragepfad angeben (z. B.
user@email.com) oder das Aliasmeverwenden. - Erweiterte Konten: Wenn Sie ein Nutzer eines erweiterten Kontos sind, werden Ihre E‑Mail- Einstellungen auf Ebene des erweiterten Kontos festgelegt und gelten für das erweiterte Konto selbst und alle zugehörigen Unterkonten. Bei Verwendung der API müssen Nutzer erweiterter Konten die ID des erweiterten Kontos angeben, um ihre Einstellungen zu verwalten.
- Dienstkonten: Dienstkonten erhalten keine Benachrichtigungen, auch wenn E‑Mail-Einstellungen für sie festgelegt wurden.
- Status
UNCONFIRMED: Der StatusUNCONFIRMEDfür eine E‑Mail-Einstellung kann nur vom Server festgelegt werden. Sie können eine Einstellung nicht über die API aufUNCONFIRMEDsetzen. Wenn Sie versuchen, diese Einstellung festzulegen, tritt ein Fehler auf. Der StatusUNCONFIRMEDgibt an, dass eine Bestätigungs-E‑Mail an einen Nutzer gesendet wurde, der sich angemeldet hat, aber noch nicht auf den Bestätigungslink geklickt hat.
E‑Mail-Einstellungen des Merchant Center-Kontos prüfen
Wenn Sie Ihre aktuellen Einstellungen für E‑Mail-Benachrichtigungen für ein bestimmtes Merchant Center
Konto sehen möchten, verwenden Sie die
GetEmailPreferences
Methode. Sie müssen Ihre Merchant Center-Konto-ID angeben und die E‑Mail-Adresse des Nutzers verwenden oder das Alias me verwenden, um den authentifizierten Nutzer anzugeben.
Diese Anfrage ruft die
EmailPreferences
Ressource ab, in der Ihr Anmeldestatus für verfügbare Benachrichtigungskategorien angezeigt wird,
wie z. B. news_and_tips.
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences
Bei einer erfolgreichen Anfrage wird die Ressource EmailPreferences mit Ihren aktuellen Einstellungen zurückgegeben.
Beispielantwort
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_IN"
}
In diesem Codebeispiel wird gezeigt, wie Sie die E‑Mail-Einstellungen für Ihr Merchant Center-Konto abrufen.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.EmailPreferences;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1.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\V1\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\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();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1 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/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences' \
--header 'Authorization: Bearer <API_TOKEN>'
E‑Mail-Einstellungen des Merchant Center-Kontos ändern
Wenn Sie Ihre Einstellungen für E‑Mail-Benachrichtigungen ändern möchten, z. B. um sich für E‑Mails mit Neuigkeiten
und Tipps an- oder abzumelden, verwenden Sie die
UpdateEmailPreferences
Methode.
In Ihrer Anfrage geben Sie die Merchant Center-Konto-ID an und verwenden Ihre E‑Mail-Adresse (oder das Alias me) für die E‑Mail-Adresse des Nutzers. Der Anfragetext sollte
das
EmailPreferences
Objekt mit dem ausgewählten opt_in_state für das news_and_tips Feld enthalten. Sie müssen auch news_and_tips im Abfrageparameter update_mask angeben, um anzugeben, welche Einstellung Sie ändern.
Mit dieser Aktion werden die E‑Mail-Einstellungen für den authentifizierten Nutzer für das angegebene Merchant Center-Konto aktualisiert. Wenn Sie beispielsweise news_and_tips auf OPTED_OUT setzen, erhalten Sie für dieses Konto keine E‑Mails mit Neuigkeiten und Tipps mehr.
PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences?update_mask=news_and_tips
Beispiel für die Anfragennutzlast (Abmeldung von E‑Mails mit Neuigkeiten und Tipps)
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_OUT"
}
Bei einer erfolgreichen Anfrage wird die aktualisierte Ressource EmailPreferences zurückgegeben.
Beispielantwort
{
"name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
"news_and_tips": "OPTED_OUT"
}
In diesem Codebeispiel wird gezeigt, wie Sie die E‑Mail-Einstellungen für Ihr Merchant Center-Konto aktualisieren, z. B. um sich für E‑Mails mit Neuigkeiten und Tipps anzumelden.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.EmailPreferences;
import com.google.shopping.merchant.accounts.v1.EmailPreferences.OptInState;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1.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\V1\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\EmailPreferences;
use Google\Shopping\Merchant\Accounts\V1\EmailPreferences\OptInState;
use Google\Shopping\Merchant\Accounts\V1\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();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import EmailPreferences
from google.shopping.merchant_accounts_v1 import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1 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/v1/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"
}'