Panduan ini memberikan ringkasan singkat tentang cara mulai menggunakan library .NET Google Ads API.
Penginstalan
Biner library klien didistribusikan menggunakan NuGet. Tambahkan referensi Nuget ke paket Google.Ads.GoogleAds
di project Anda untuk menggunakan library klien.
Menyiapkan otorisasi
Untuk mengizinkan panggilan API, Anda harus menetapkan client ID, rahasia klien, token refresh, dan token developer ke library.
Jika Anda sudah memiliki kredensial...
- Salin node
GoogleAdsApi
dan bagianGoogleAdsApi
di bawah nodeconfigSections
dari fileApp.config
di GitHub ke fileApp.config
/Web.config
Anda. Jika Anda menggunakan NuGet untuk menginstal paket, node ini akan otomatis disisipkan ke dalam fileApp.config
/Web.config
Anda. - Sertakan token developer, client ID, rahasia klien, dan token refresh di
App.config
/Web.config
aplikasi Anda. FileApp.config
yang disertakan di GitHub didokumentasikan dengan baik, tetapi Anda juga dapat membaca Panduan konfigurasi untuk mempelajari lebih lanjut serta menggunakan setelan konfigurasi alternatif.
Jika Anda perlu membuat kredensial...
- Ikuti Panduan token developer untuk mendapatkan token developer, jika Anda belum memilikinya.
- Ikuti panduan alur aplikasi desktop OAuth untuk membuat client ID, rahasia klien, dan token refresh.
- Salin node
GoogleAdsApi
dan bagianGoogleAdsApi
di bawah nodeconfigSections
dari fileApp.config
di GitHub ke fileApp.config
/Web.config
Anda. Jika Anda menggunakan NuGet untuk menginstal paket, node ini akan otomatis disisipkan ke dalam fileApp.config
/Web.config
Anda. - Sertakan token developer, client ID, rahasia klien, dan token refresh di
App.config
/Web.config
aplikasi Anda. FileApp.config
yang disertakan di GitHub didokumentasikan dengan baik, tetapi Anda juga dapat membaca Panduan konfigurasi untuk mempelajari lebih lanjut serta menggunakan setelan konfigurasi alternatif.
Melakukan panggilan API
Penggunaan dasar dari library klien ditunjukkan di bawah ini:
// Create a Google Ads client.
GoogleAdsClient client = new GoogleAdsClient();
// Create the required service.
CampaignServiceClient campaignService =
client.GetService(Services.V17.CampaignService);
// Make more calls to service class.
Membuat instance GoogleAdsClient
Class yang paling penting dalam library .NET Google Ads API adalah class GoogleAdsClient
. API ini memungkinkan Anda membuat class layanan yang telah dikonfigurasi sebelumnya, yang dapat digunakan untuk melakukan panggilan API. GoogleAdsClient
menyediakan konstruktor default
yang membuat objek pengguna menggunakan setelan yang ditentukan dalam
App.config
/ Web.config
aplikasi Anda. Lihat Panduan
konfigurasi untuk berbagai opsi
konfigurasi.
// Create a new GoogleAdsClient with the App.config settings.
GoogleAdsClient user = new GoogleAdsClient();
Membuat service
GoogleAdsClient
menyediakan metode GetService
yang dapat digunakan untuk membuat
layanan Ads.
CampaignServiceClient campaignService = client.GetService(Services.V17.CampaignService);
// Now make calls to CampaignService.
Kami menyediakan class Services
yang menghitung semua versi dan layanan API
yang didukung. Metode GetService
menerima objek enumerasi ini sebagai argumen
saat membuat layanan. Misalnya, untuk membuat instance
CampaignServiceClient
untuk versi V17
Google Ads API,
Anda harus memanggil metode GoogleAdsClient.GetService
dengan
Services.V17.CampaignService
sebagai argumen, seperti yang ditunjukkan
di atas.
Keamanan thread
Berbagi instance GoogleAdsClient
tidak aman di antara beberapa thread,
karena perubahan konfigurasi yang Anda buat pada instance di satu thread mungkin
memengaruhi layanan yang Anda buat di thread lainnya. Operasi seperti mendapatkan instance layanan baru dari instance GoogleAdsClient
, melakukan panggilan ke beberapa layanan secara paralel, dll., aman untuk thread.
Aplikasi multi-thread akan terlihat seperti ini:
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.
...
}
Menghindari pembekuan di aplikasi .NET Framework
Metode sinkron dapat menyebabkan beberapa aplikasi .NET Framework berhenti berfungsi. Contoh umumnya adalah melakukan panggilan API dari metode pengendali peristiwa pada aplikasi WinForm.
Ada dua cara untuk mengatasi masalah ini:
Menggunakan library Grpc lama.
Anda dapat menetapkan properti
UseGrpcCore
dariGoogleAdsConfig
untuk menggunakan libraryGrpc.Core
lama, bukan libraryGrpc.Net.Client
default. Metode ini belum diuji secara ekstensif pada aplikasi .NET Framework, sehingga mungkin tidak menyelesaikan masalah. Berikut adalah contoh cuplikan:GoogleAdsConfig config = new GoogleAdsConfig(); config.UseGrpcCore = true; GoogleAdsClient client = new GoogleAdsClient(config);
Gunakan metode asinkron.
Anda dapat menggunakan metode asinkron untuk menghindari berhenti berfungsi. Berikut beberapa contohnya:
SearchStream
Panggilan ke
SearchStream()
dilakukan, dan hasilnya diisi ke tampilan daftar.private async void button1_Click(object sender, EventArgs e) { // Get the GoogleAdsService. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V17.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()); } Anggaran Kampanye
Panggilan CampaignBudget dibuat, dan nama resource anggaran baru ditampilkan menggunakan pemberitahuan
MessageBox
.private async void button2_Click(object sender, EventArgs e) { // Get the BudgetService. CampaignBudgetServiceClient budgetService = client.GetService( Services.V17.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); }
Membatalkan metode asinkron
Untuk pemrograman asinkron, Anda dapat menggunakan parameter callSettings
untuk meneruskan
CancellationToken
:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V17.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
Penanganan error
Tidak semua panggilan API akan berhasil. Server dapat menampilkan error jika panggilan API Anda gagal karena beberapa alasan. Penting untuk menangkap error API dan menanganinya dengan tepat.
Instance GoogleAdsException
ditampilkan saat terjadi error API. Halaman ini memiliki detail untuk membantu Anda mencari tahu apa yang salah:
// Get the CampaignService.
CampaignServiceClient campaignService = client.GetService(Services.V17.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}");
}