השימוש הבסיסי בספריית הלקוח הוא כדלקמן:
// 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
המחלקות הכי חשובות בספריית .NET של Google Ads API הן המחלקות GoogleAdsClient
. היא מאפשרת ליצור מחלקת שירות שהוגדרה מראש ושאפשר להשתמש בה כדי לבצע קריאות ל-API. כדי להגדיר אובייקט GoogleAdsClient, צריך ליצור אובייקט GoogleAdsConfig
ולהגדיר את ההגדרות הנדרשות. מידע נוסף זמין במדריך ההגדרה.
// 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 = ******;
יצירת שירות
GoogleAdsClient
מספק שיטה GetService
שאפשר להשתמש בה כדי ליצור שירות של Google Ads.
CampaignServiceClient campaignService = client.GetService(
Services.V21.CampaignService);
// Now make calls to CampaignService.
אנחנו מספקים מחלקה Services
שמפרטת את כל גרסאות ה-API והשירותים הנתמכים. השיטה GetService
מקבלת את אובייקטי ה-enumeration האלה כארגומנטים כשיוצרים את השירות. לדוגמה, כדי ליצור מופע של CampaignServiceClient
לגרסה V21
של Google Ads API, צריך להפעיל את השיטה GoogleAdsClient.GetService
עם Services.V21.CampaignService
כארגומנט, כמו שמוצג בדוגמה הקודמת.
טיפול בשגיאות
לא כל קריאה ל-API תצליח. השרת יכול להחזיר שגיאות אם הקריאות ל-API נכשלות מסיבה כלשהי. חשוב לתעד שגיאות ב-API ולטפל בהן בצורה מתאימה.
מופעלת מופע GoogleAdsException
כשמתרחשת שגיאה ב-API. הוא כולל פרטים שיעזרו לכם להבין מה השתבש:
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; } }
Thread safety
לא מומלץ לשתף מופע GoogleAdsClient
בין כמה שרשורים, כי שינויים בהגדרות שמבצעים במופע בשרשור אחד עשויים להשפיע על השירותים שיוצרים בשרשורים אחרים. פעולות כמו קבלת מופעים חדשים של שירותים ממופע GoogleAdsClient
וביצוע שיחות למספר שירותים במקביל הן בטוחות לשימוש עם תהליכים.
אפליקציה מרובת-שרשורים תיראה בערך כך:
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.
...
}
איך לוודא שהאפליקציה רספונסיבית
יכול להיות שיעבור זמן רב עד שקריאות לשיטות של Google Ads API יסתיימו, בהתאם לגודל הבקשות. כדי שהאפליקציה תמשיך להגיב, מומלץ לבצע את הפעולות הבאות:
שימוש בספרייה Grpc.Core
אם אתם מפתחים אפליקציה שמיועדת ל- .NET Framework ומשתמשת בטכנולוגיה מדור קודם כמו ASP.NET Web Forms או אפליקציית WinForms, מומלץ להשתמש בספריית 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);
}
```