Die grundlegende Verwendung der Clientbibliothek sieht so aus:
// Initialize a GoogleAdsConfig class.
GoogleAdsConfig config = new GoogleAdsConfig()
{
DeveloperToken = "******",
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
LoginCustomerId = ******
};
// Initialize a GoogleAdsClient class.
GoogleAdsClient client = new GoogleAdsClient(config);
// Create the required service.
CampaignServiceClient campaignService =
client.GetService(Services.V21.CampaignService);
// Make more calls to service class.
GoogleAdsClient
-Instanz erstellen
Die wichtigste Klasse in der Google Ads API-Bibliothek für .NET ist die Klasse GoogleAdsClient
. Damit können Sie eine vorkonfigurierte Dienstklasse erstellen, die für API-Aufrufe verwendet werden kann. Wenn Sie ein GoogleAdsClient-Objekt konfigurieren möchten, müssen Sie ein GoogleAdsConfig
-Objekt erstellen und die erforderlichen Einstellungen festlegen. Weitere Informationen finden Sie im Konfigurationsleitfaden.
// Initialize a GoogleAdsConfig class.
GoogleAdsConfig config = new GoogleAdsConfig()
{
DeveloperToken = "******",
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
LoginCustomerId = ******
};
// Initialize a GoogleAdsClient class.
GoogleAdsClient client = new GoogleAdsClient(config);
// Modify the GoogleAdsClient afterwards.
client.Config.LoginCustomerId = ******;
Dienste erstellen
GoogleAdsClient
bietet eine GetService
-Methode, mit der ein Ads-Dienst erstellt werden kann.
CampaignServiceClient campaignService = client.GetService(
Services.V21.CampaignService);
// Now make calls to CampaignService.
Wir stellen eine Services
-Klasse bereit, in der alle unterstützten API-Versionen und ‑Dienste aufgeführt sind. Die Methode GetService
akzeptiert diese Enumerationsobjekte als Argument beim Erstellen des Dienstes. Wenn Sie beispielsweise eine Instanz von CampaignServiceClient
für Version V21
der Google Ads API erstellen möchten, müssen Sie die Methode GoogleAdsClient.GetService
mit Services.V21.CampaignService
als Argument aufrufen, wie im vorherigen Beispiel gezeigt.
Fehlerbehandlung
Nicht jeder API-Aufruf ist erfolgreich. Der Server kann Fehler ausgeben, wenn Ihre API-Aufrufe aus irgendeinem Grund fehlschlagen. Es ist wichtig, API-Fehler zu erfassen und angemessen zu behandeln.
Eine GoogleAdsException
-Instanz wird ausgelöst, wenn ein API-Fehler auftritt. Sie enthält Details, die Ihnen helfen, herauszufinden, was schiefgelaufen ist:
public void Run(GoogleAdsClient client, long customerId) { // Get the GoogleAdsService. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V21.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"; try { // Issue a search request. googleAdsService.SearchStream(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { foreach (GoogleAdsRow googleAdsRow in resp.Results) { Console.WriteLine("Campaign with ID {0} and name '{1}' was found.", googleAdsRow.Campaign.Id, googleAdsRow.Campaign.Name); } } ); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
Threadsicherheit
Es ist nicht sicher, eine GoogleAdsClient
-Instanz für mehrere Threads freizugeben, da sich die Konfigurationsänderungen, die Sie an einer Instanz in einem Thread vornehmen, auf die Dienste auswirken können, die Sie in anderen Threads erstellen. Vorgänge wie das Abrufen neuer Dienstinstanzen aus einer GoogleAdsClient
-Instanz und das parallele Aufrufen mehrerer Dienste sind threadsicher.
Eine Multithread-Anwendung würde in etwa so aussehen:
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.
...
}
ANRs vermeiden
Die Ausführung von API-Methodenaufrufen der Google Ads API kann je nach Größe der Anfragen eine Weile dauern. Damit Ihre Anwendung reaktionsschnell bleibt, empfehlen wir Folgendes:
Bibliothek Grpc.Core
verwenden
Wenn Sie eine Anwendung entwickeln, die auf .NET Framework ausgerichtet ist und eine Legacy-Technologie wie ASP.NET Web Forms oder eine WinForms-Anwendung verwendet, empfehlen wir die Verwendung der Legacy-Bibliothek Grpc.Core
:
GoogleAdsConfig config = new GoogleAdsConfig();
config.UseGrpcCore = true;
GoogleAdsClient client = new GoogleAdsClient(config);
```
### Use the asynchronous methods {: #asynchronous}
You can use asynchronous methods to keep your application responsive. Here are a
couple of examples.
#### Retrieve the list of campaigns, and populate a `ListView`
```c#
private async void button1_Click(object sender, EventArgs e)
{
// Get the GoogleAdsService.
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V21.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<ListViewItem> items = new List<ListViewItem>();
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());
}
```
#### Update a campaign budget and display a Message box alert
```c#
private async void button2_Click(object sender, EventArgs e)
{
// Get the BudgetService.
CampaignBudgetServiceClient budgetService = client.GetService(
Services.V21.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<MutateCampaignBudgetsResponse> t = budgetService.MutateCampaignBudgetsAsync(
customerId.ToString(), new CampaignBudgetOperation[] { budgetOperation });
await t;
MutateCampaignBudgetsResponse response = t.Result;
MessageBox.Show(response.Results[0].ResourceName);
}
```