Ce guide explique brièvement comment utiliser l'API Google Ads. bibliothèque .NET.
Installation
Les binaires de la bibliothèque cliente sont distribués à l'aide de NuGet. Ajouter une référence NuGet
à la Google.Ads.GoogleAds
package dans votre projet afin d'utiliser
la bibliothèque cliente.
Configurer les autorisations
Pour autoriser vos appels d'API, vous devez spécifier votre ID client, votre code secret un jeton d'actualisation et un jeton de développeur à la bibliothèque.
Si vous devez générer des identifiants
- Suivez le guide des jetons de développeur pour obtenir votre jeton de développeur, si vous n'en avez pas déjà un.
- Suivez le guide Flux OAuth pour les applications de bureau pour générer un ID client, un secret client et un jeton d'actualisation.
Si vous possédez déjà des identifiants
- Copiez le nœud
GoogleAdsApi
et la sectionGoogleAdsApi
sous le nœud NœudconfigSections
du fichierApp.config
dans GitHub dans votre fichierApp.config
/Web.config
. Si vous avez utilisé NuGet pour installer package, ces nœuds seront automatiquement insérés dans votre FichierApp.config
/Web.config
. - Incluez le jeton de développeur, l'ID client, le code secret du client et le jeton d'actualisation.
dans les
App.config
/Web.config
de votre application.
App.config
inclus dans GitHub est bien documenté, mais vous pouvez également vous référer au
Guide de configuration
pour en savoir plus et utiliser d'autres façons
de configurer la bibliothèque cliente,
telles que des variables d'environnement.
Effectuer un appel d'API
L'utilisation de base de la bibliothèque cliente est la suivante:
// Create a Google Ads client.
GoogleAdsClient client = new GoogleAdsClient();
// Create the required service.
CampaignServiceClient campaignService =
client.GetService(Services.V18.CampaignService);
// Make more calls to service class.
Créer une instance GoogleAdsClient
Les classes les plus importantes de la bibliothèque .NET de l'API Google Ads sont
GoogleAdsClient
. Il vous permet de créer une classe de service préconfigurée
permettant d'effectuer des appels d'API. GoogleAdsClient
fournit une valeur par défaut
qui crée un objet utilisateur à l'aide des paramètres spécifiés dans votre
App.config
/ Web.config
de l'application. Pour connaître les options de configuration, consultez le guide de configuration.
// Create a new GoogleAdsClient with the App.config settings.
GoogleAdsClient user = new GoogleAdsClient();
créer un service ;
GoogleAdsClient
fournit une méthode GetService
qui peut être utilisée pour créer un service Ads.
CampaignServiceClient campaignService = client.GetService(Services.V18.CampaignService);
// Now make calls to CampaignService.
Nous fournissons une classe Services
qui énumère toutes les versions et services d'API compatibles. La méthode GetService
accepte ces objets d'énumération en tant qu'arguments.
lors de la création du service. Par exemple, pour créer une instance
CampaignServiceClient
pour la version V18
de l'API Google Ads
vous devez appeler la méthode GoogleAdsClient.GetService
avec
Services.V18.CampaignService
comme argument, comme indiqué
dans l'exemple précédent.
Thread safety
Il n'est pas sûr de partager une instance GoogleAdsClient
entre plusieurs threads, car les modifications de configuration que vous apportez à une instance dans un thread peuvent affecter les services que vous créez sur d'autres threads. Des opérations telles
que l’obtention
de nouvelles instances de service à partir d'une instance GoogleAdsClient
et en effectuant des appels vers
plusieurs services en parallèle
sont thread-safe.
Une application multithread ressemblerait à ceci:
GoogleAdsClient client1 = new GoogleAdsClient();
GoogleAdsClient client2 = new GoogleAdsClient();
Thread userThread1 = new Thread(addAdGroups);
Thread userThread2 = new Thread(addAdGroups);
userThread1.start(client1);
userThread2.start(client2);
userThread1.join();
userThread2.join();
public void addAdGroups(object data) {
GoogleAdsClient client = (GoogleAdsClient) data;
// Do more operations here.
...
}
Éviter les blocages dans les applications .NET Framework
Les méthodes synchrones peuvent entraîner le blocage de certaines de vos applications .NET Framework. Un exemple courant consiste à effectuer des appels d'API à partir d'une méthode de gestionnaire d'événements. d'une application WinForm.
Vous pouvez résoudre ce problème de deux façons:
Utilisez l'ancienne bibliothèque Grpc.
Vous pouvez définir la propriété
UseGrpcCore
deGoogleAdsConfig
pour utiliser l'ancienne bibliothèqueGrpc.Core
au lieu de la bibliothèqueGrpc.Net.Client
par défaut. Cette méthode n'a pas été testée de manière exhaustive sur les applications .NET Framework, donc cela pourrait ne pas résoudre le problème. Voici un exemple d'extrait :GoogleAdsConfig config = new GoogleAdsConfig(); config.UseGrpcCore = true; GoogleAdsClient client = new GoogleAdsClient(config);
Vous trouverez sur la page d'assistance gRPC Informations détaillées sur les différences entre l'ancienne bibliothèque
Grpc.Core
et la bibliothèqueGrpc.Net.Client
par défaut.Utilisez des méthodes asynchrones.
Vous pouvez utiliser des méthodes asynchrones pour éviter les blocages. Voici quelques exemples :
SearchStream
Un appel à
SearchStream()
est effectué, et les résultats sont renseignés dans une vue de liste.private async void button1_Click(object sender, EventArgs e) { // Get the GoogleAdsService. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V18.GoogleAdsService); // Create a query that will retrieve all campaigns. string query = @"SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"; List
items = new List (); Task t = googleAdsService.SearchStreamAsync(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { foreach (GoogleAdsRow googleAdsRow in resp.Results) { ListViewItem item = new ListViewItem(); item.Text = googleAdsRow.Campaign.Id.ToString(); item.SubItems.Add(googleAdsRow.Campaign.Name); items.Add(item); } } ); await t; listView1.Items.AddRange(items.ToArray()); } Budget de la campagne
Un appel CampaignBudget est créé et le nom de ressource du nouveau budget est affiché à l'aide d'une alerte
MessageBox
.private async void button2_Click(object sender, EventArgs e) { // Get the BudgetService. CampaignBudgetServiceClient budgetService = client.GetService( Services.V18.CampaignBudgetService); // Create the campaign budget. CampaignBudget budget = new CampaignBudget() { Name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString(), DeliveryMethod = BudgetDeliveryMethod.Standard, AmountMicros = 500000 }; // Create the operation. CampaignBudgetOperation budgetOperation = new CampaignBudgetOperation() { Create = budget }; // Create the campaign budget. Task
t = budgetService.MutateCampaignBudgetsAsync( customerId.ToString(), new CampaignBudgetOperation[] { budgetOperation }); await t; MutateCampaignBudgetsResponse response = t.Result; MessageBox.Show(response.Results[0].ResourceName); }
Gestion des exceptions
Tous les appels d'API n'aboutissent pas. Le serveur peut générer des erreurs si vos appels d'API échouer pour une raison quelconque. Il est important de capturer les erreurs d'API et de les gérer en conséquence.
Une instance GoogleAdsException
est générée lorsqu'une erreur d'API se produit. Il contient des informations qui vous aideront à comprendre ce qui ne va pas :
// Get the CampaignService.
CampaignServiceClient campaignService = client.GetService(Services.V18.CampaignService);
// Create a campaign for update.
Campaign campaignToUpdate = new Campaign()
{
ResourceName = ResourceNames.Campaign(customerId, campaignId),
// More fields to update.
// ...
};
// Create the operation.
CampaignOperation operation = new CampaignOperation()
{
Update = campaignToUpdate,
UpdateMask = FieldMasks.AllSetFieldsOf(campaignToUpdate)
};
try
{
// Update the campaign.
MutateCampaignsResponse response = campaignService.MutateCampaigns(
customerId.ToString(), new CampaignOperation[] { operation });
// Display the results.
// ...
}
catch (GoogleAdsException e)
{
Console.WriteLine("Failure:");
Console.WriteLine($"Message: {e.Message}");
// Can examine to get more error details.
Console.WriteLine($"Failure: {e.Failure}");
// Can be shared with Google for further troubleshooting.
Console.WriteLine($"Request ID: {e.RequestId}");
}