Pour créer un compte client, envoyez un objet Customer prérempli
à l'aide de la méthode CreateCustomerClient sur CustomerService.
Contrairement à la création d'entités standards (comme la création de campagnes à l'aide d'appels mutate), vous devez spécifier l'ID client du compte administrateur dans la requête plutôt que l'ID du client en cours de création.
Champs de requête et de client
Lorsque vous appelez CustomerService.CreateCustomerClient, configurez
CreateCustomerClientRequest et son objet Customer imbriqué, comme
indiqué dans le tableau suivant :
| Champ ou en-tête | Exigence | Mutabilité et description |
|---|---|---|
customer_id |
Obligatoire | Numéro client à 10 chiffres (sans tirets) du compte administrateur parent direct sous lequel le nouveau compte client est créé. |
login-customer-id (en-tête) |
Conditionnel | Obligatoire dans les en-têtes de requête si l'utilisateur authentifié accède au compte administrateur parent (customer_id) via un compte administrateur ancêtre plus haut dans la hiérarchie. |
customer_client.descriptive_name |
Obligatoire | Mutable : nom à afficher du nouveau compte (par exemple, "Acct Created with CustomerService"). Peut être mis à jour ultérieurement avec CustomerService.MutateCustomer. |
customer_client.currency_code |
Obligatoire | Immuable après la création : code de devise de facturation ISO 4217 à trois caractères (par exemple, USD ou EUR). Consultez les codes de devise compatibles. |
customer_client.time_zone |
Obligatoire | Immuable après la création : ID du fuseau horaire du compte (par exemple, America/New_York). Consultez les fuseaux horaires compatibles. |
email_address et access_role |
Facultatif (liste d'autorisation uniquement) | Invite un utilisateur (ADMIN, STANDARD, READ_ONLY ou EMAIL_ONLY) dans le compte créé lors de la création. Les comptes qui ne figurent pas sur la liste d'autorisation doivent inviter des utilisateurs après la création à l'aide de CustomerUserAccessInvitationService. |
validate_only |
Facultatif | Lorsque la valeur est true, valide les paramètres de la requête et l'éligibilité de l'administrateur sans créer le compte. |
Exemple de code
L'exemple suivant montre comment créer un compte client sous un compte administrateur existant :
Java
private void runExample(GoogleAdsClient googleAdsClient, Long managerId) { // Formats the current date/time to use as a timestamp in the new customer description. String dateTime = ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME); // Initializes a Customer object to be created. Customer customer = Customer.newBuilder() .setDescriptiveName("Account created with CustomerService on '" + dateTime + "'") .setCurrencyCode("USD") .setTimeZone("America/New_York") // Optional: Sets additional attributes of the customer. .setTrackingUrlTemplate("{lpurl}?device={device}") .setFinalUrlSuffix("keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}") .build(); // Sends the request to create the customer. try (CustomerServiceClient client = googleAdsClient.getLatestVersion().createCustomerServiceClient()) { CreateCustomerClientResponse response = client.createCustomerClient(managerId.toString(), customer); System.out.printf( "Created a customer with resource name '%s' under the manager account with" + " customer ID '%d'.%n", response.getResourceName(), managerId); } }
C#
public void Run(GoogleAdsClient client, long managerCustomerId) { // Get the CustomerService. CustomerServiceClient customerService = client.GetService(Services.V26.CustomerService); Customer customer = new Customer() { DescriptiveName = $"Account created with CustomerService on '{DateTime.Now}'", // For a list of valid currency codes and time zones see this documentation: // https://developers.google.com/google-ads/api/reference/data/codes-formats#codes_formats. CurrencyCode = "USD", TimeZone = "America/New_York", // The below values are optional. For more information about URL // options see: https://support.google.com/google-ads/answer/6305348. TrackingUrlTemplate = "{lpurl}?device={device}", FinalUrlSuffix = "keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}" }; try { // Create the account. CreateCustomerClientResponse response = customerService.CreateCustomerClient( managerCustomerId.ToString(), customer); // Display the result. Console.WriteLine($"Created a customer with resource name " + $"'{response.ResourceName}' under the manager account with customer " + $"ID '{managerCustomerId}'"); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample(GoogleAdsClient $googleAdsClient, int $managerCustomerId) { $customer = new Customer([ 'descriptive_name' => 'Account created with CustomerService on ' . date('Ymd h:i:s'), // For a list of valid currency codes and time zones see this documentation: // https://developers.google.com/google-ads/api/reference/data/codes-formats. 'currency_code' => 'USD', 'time_zone' => 'America/New_York', // The below values are optional. For more information about URL // options see: https://support.google.com/google-ads/answer/6305348. 'tracking_url_template' => '{lpurl}?device={device}', 'final_url_suffix' => 'keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}' ]); // Issues a mutate request to create an account $customerServiceClient = $googleAdsClient->getCustomerServiceClient(); $response = $customerServiceClient->createCustomerClient( CreateCustomerClientRequest::build($managerCustomerId, $customer) ); printf( 'Created a customer with resource name "%s" under the manager account with ' . 'customer ID %d.%s', $response->getResourceName(), $managerCustomerId, PHP_EOL ); }
Python
def main(client: GoogleAdsClient, manager_customer_id: str) -> None: """The main method that creates all necessary entities for the example. Args: client: an initialized GoogleAdsClient instance. manager_customer_id: a manager client customer ID. """ customer_service: CustomerServiceClient = client.get_service( "CustomerService" ) customer: Customer = client.get_type("Customer") now: str = datetime.today().strftime("%Y%m%d %H:%M:%S") customer.descriptive_name = f"Account created with CustomerService on {now}" # For a list of valid currency codes and time zones see this documentation: # https://developers.google.com/google-ads/api/reference/data/codes-formats customer.currency_code = "USD" customer.time_zone = "America/New_York" # The below values are optional. For more information about URL # options see: https://support.google.com/google-ads/answer/6305348 customer.tracking_url_template = "{lpurl}?device={device}" customer.final_url_suffix = ( "keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}" ) response: CreateCustomerClientResponse = ( customer_service.create_customer_client( customer_id=manager_customer_id, customer_client=customer ) ) print( f'Customer created with resource name "{response.resource_name}" ' f'under manager account with ID "{manager_customer_id}".' )
Ruby
def create_customer(manager_customer_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new customer = client.resource.customer do |c| c.descriptive_name = "Account created with CustomerService on #{(Time.new.to_f * 1000).to_i}" # For a list of valid currency codes and time zones, see this documentation: # https://developers.google.com/google-ads/api/reference/data/codes-formats c.currency_code = "USD" c.time_zone = "America/New_York" # The below values are optional. For more information about URL options, see: # https://support.google.com/google-ads/answer/6305348 c.tracking_url_template = "{lpurl}?device={device}" c.final_url_suffix = "keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}" end response = client.service.customer.create_customer_client( customer_id: manager_customer_id, customer_client: customer ) puts "Created a customer with resource name #{response.resource_name} under" + " the manager account with customer ID #{manager_customer_id}." end
Perl
sub create_customer { my ($api_client, $manager_customer_id) = @_; # Initialize a customer to be created. my $customer = Google::Ads::GoogleAds::V26::Resources::Customer->new({ descriptiveName => "Account created with CustomerService on #" . uniqid(), # For a list of valid currency codes and time zones, see this documentation: # https://developers.google.com/google-ads/api/reference/data/codes-formats currencyCode => "USD", timeZone => "America/New_York", # The below values are optional. For more information about URL options, see: # https://support.google.com/google-ads/answer/6305348 trackingUrlTemplate => "{lpurl}?device={device}", finalUrlSuffix => "keyword={keyword}&matchtype={matchtype}&adgroupid={adgroupid}" }); # Create the customer client. my $create_customer_client_response = $api_client->CustomerService()->create_customer_client({ customerId => $manager_customer_id, customerClient => $customer }); printf "Created a customer with resource name '%s' under the manager account " . "with customer ID %d.\n", $create_customer_client_response->{resourceName}, $manager_customer_id; return 1; }
curl
# Creates a customer client. # # Variables: # API_VERSION, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${MANAGER_CUSTOMER_ID}:createCustomerClient" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "customerClient": { "descriptiveName": "Account created with CustomerService #${RANDOM}", "currencyCode": "USD", "timeZone": "America/New_York" } } EOF
Réponse et étapes suivantes
En cas de réussite, CreateCustomerClient renvoie une CreateCustomerClientResponse
contenant le resource_name (customers/{new_customer_id}) du compte nouvellement
créé (ainsi qu'un invitation_link si email_address et access_role
ont été inclus par un compte administrateur figurant sur la liste d'autorisation). Vous pouvez ensuite utiliser ce nom de ressource ou ce numéro client pour vérifier le compte dans votre hiérarchie, accorder un accès utilisateur, configurer la facturation ou remplir des campagnes.
Vérifier le compte créé dans la hiérarchie de l'administrateur
Interrogez la ressource customer_client par rapport au compte administrateur (customer_id) à l'aide de GoogleAdsService.SearchStream
pour inspecter le sous-compte nouvellement créé :
SELECT
customer_client.id,
customer_client.resource_name,
customer_client.client_customer,
customer_client.descriptive_name,
customer_client.currency_code,
customer_client.time_zone,
customer_client.manager,
customer_client.level,
customer_client.status
FROM customer_client
WHERE customer_client.level = 1
AND customer_client.id = {new_customer_id}
Inviter des utilisateurs dans le nouveau compte
Si votre compte administrateur ne figure pas sur la liste d'autorisation pour définir email_address et
access_role directement sur CreateCustomerClientRequest, envoyez une invitation d'accès au new_customer_id nouvellement créé à l'aide
MutateCustomerUserAccessInvitation sur
CustomerUserAccessInvitationService. Lors de l'authentification via le compte administrateur parent, incluez login-customer-id: {manager_customer_id} dans les en-têtes de requête HTTP :
POST https://googleads.googleapis.com/v26/customers/{new_customer_id}/customerUserAccessInvitations:mutate
{
"operation": {
"create": {
"emailAddress": "user@example.com",
"accessRole": "ADMIN"
}
}
}
Gestion des exceptions
Les appels à CreateCustomerClient peuvent renvoyer les erreurs suivantes :
CustomerError: indique des restrictions de création au niveau du compte, telles queCREATION_DENIED_INELIGIBLE_MCC(le compte administrateur n'est pas éligible pour créer des comptes) ouCREATION_DENIED_FOR_POLICY_VIOLATION(la création de clients est refusée en raison d'un cas de non-respect des règles).ManagerLinkError: indique des contraintes de hiérarchie ou de limite de compte, telles queTOO_MANY_ACCOUNTS,TOO_MANY_ACCOUNTS_AT_MANAGERouMAX_DEPTH_EXCEEDED.AccessInvitationError: renvoyée si uneemail_addressfacultative (ainsi queaccess_role, disponible uniquement pour les comptes figurant sur la liste d'autorisation) est fournie surCreateCustomerClientRequestpour inviter un utilisateur dans le nouveau compte et que l'invitation échoue (par exemple,INVALID_EMAIL_ADDRESS,GOOGLE_CONSUMER_ACCOUNT_NOT_ALLOWEDouEMAIL_DOMAIN_POLICY_VIOLATED). Les comptes qui ne figurent pas sur la liste d'autorisation doivent inviter des utilisateurs après la création du compte à l'aide deCustomerUserAccessInvitationService.CurrencyCodeError.UNSUPPORTEDouTimeZoneError.INVALID_TIME_ZONE: renvoyée lorsque lecurrency_codeou letime_zonespécifié sur l'objetCustomern'est pas valide ou n'est pas compatible.