판매자 센터 계정의 이메일 알림 환경설정 관리하기

이 가이드에서는 Merchant API를 사용하여 판매자 센터 계정의 비필수 이메일에 대한 이메일 알림 환경설정을 관리하는 방법을 설명합니다.

이메일 환경설정은 액세스 권한이 있는 각 판매자 센터 계정에 따라 다릅니다. 여러 계정을 관리하는 경우 계정별로 서로 다른 환경설정을 설정할 수 있습니다. Merchant API를 사용하면 현재 설정을 가져와 업데이트할 수 있습니다. 판매자 센터 인터페이스를 통해 이메일 환경설정을 관리하는 방법에 관한 자세한 내용은 판매자 센터 이메일 환경설정 변경을 참고하세요.

Merchant API는 '뉴스 및 도움말' 이메일의 환경설정 관리만 지원합니다.

특별 고려사항

  • 인증된 사용자만 해당: API 호출에 대해 인증된 사용자 계정의 이메일 환경설정만 가져오거나 업데이트할 수 있습니다. 요청 경로 (예: user@email.com)에서 이 사용자의 이메일 주소를 지정하거나 me 별칭을 사용해야 합니다.
  • 고급 계정: 고급 계정 사용자의 경우 이메일 환경설정이 고급 계정 수준에서 설정되며 고급 계정 자체와 모든 하위 계정에 적용됩니다. API를 사용할 때 고급 계정 사용자는 고급 계정 ID를 지정하여 환경설정을 관리해야 합니다.
  • 서비스 계정: 서비스 계정에 이메일 환경설정이 설정되어 있더라도 알림이 수신되지 않습니다.
  • UNCONFIRMED 상태: 이메일 환경설정의 UNCONFIRMED 선택 상태는 서버에서만 설정할 수 있습니다. API를 사용하여 환경설정을 UNCONFIRMED로 설정할 수 없습니다. 이 환경설정을 설정하려고 하면 오류가 발생합니다. UNCONFIRMED 상태는 수신 동의한 사용자에게 확인 이메일이 전송되었지만 아직 확인 링크를 클릭하지 않았음을 나타냅니다.

판매자 센터 이메일 환경설정 확인

특정 판매자 센터 계정의 현재 이메일 알림 설정을 보려면 GetEmailPreferences 메서드를 사용하세요. 판매자 센터 계정 ID를 제공하고 사용자의 이메일 주소를 사용하거나 me 별칭을 사용하여 인증된 사용자를 표시해야 합니다.

이 요청은 사용 가능한 알림 카테고리(예: news_and_tips)의 선택 상태를 보여주는 EmailPreferences 리소스를 가져옵니다.

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"
}

이 코드 샘플은 판매자 센터 계정의 이메일 환경설정을 가져오는 방법을 보여줍니다.

자바

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();

Python

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>'

판매자 센터 이메일 환경설정 변경

'뉴스 및 도움말' 이메일 수신 여부와 같은 이메일 알림 환경설정을 변경하려면 UpdateEmailPreferences 메서드를 사용하세요.

요청 시 판매자 센터 계정 ID를 제공하고 사용자 이메일로 이메일 주소 (또는 me 별칭)를 사용합니다. 요청 본문에는 news_and_tips 필드에 선택된 opt_in_state가 있는 EmailPreferences 객체가 포함되어야 합니다. 또한 update_mask 쿼리 매개변수에서 news_and_tips를 지정하여 변경할 환경설정을 나타내야 합니다.

이 작업은 지정된 판매자 센터 계정의 인증된 사용자의 이메일 환경설정을 업데이트합니다. 예를 들어 news_and_tipsOPTED_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"
}

이 코드 샘플에서는 '뉴스 및 도움말' 이메일을 선택하는 등 판매자 센터 계정의 이메일 환경설정을 업데이트하는 방법을 보여줍니다.

자바

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();

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_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"
}'