Başlarken

Bu rehberde, Google Ads API .NET kitaplığını kullanmaya başlama hakkında kısa bir genel bakış sunulmaktadır.

Kurulum

İstemci kitaplığı ikilileri NuGet kullanılarak dağıtılır. İstemci kitaplığını kullanmak için projenizdeki Google.Ads.GoogleAds paketine bir NuGet referansı ekleyin.

Yetkilendirme kurulumu

API çağrılarınızı yetkilendirmek için kitaplığa istemci kimliğinizi, istemci gizli dizinizi, yenileme jetonunuzu ve geliştirici jetonunuzu belirtmeniz gerekir.

Kimlik bilgisi oluşturmanız gerekiyorsa

Kimlik bilgileriniz varsa

GitHub'da bulunan App.config dosyası iyi bir şekilde belgelenmiştir ancak daha fazla bilgi edinmek ve istemci kitaplığını yapılandırmak için ortam değişkenleri gibi alternatif yöntemler kullanmak üzere yapılandırma kılavuzuna da başvurabilirsiniz.

API çağrısı yapma

İstemci kitaplığının temel kullanımı şu şekildedir:

// Create a Google Ads client.
GoogleAdsClient client = new GoogleAdsClient();

// Create the required service.
CampaignServiceClient campaignService =
    client.GetService(Services.V20.CampaignService);

// Make more calls to service class.

GoogleAdsClient örneği oluşturma

Google Ads API .NET kitaplığındaki en önemli sınıflardan biri GoogleAdsClient sınıfıdır. API çağrıları yapmak için kullanılabilecek önceden yapılandırılmış bir hizmet sınıfı oluşturmanıza olanak tanır. GoogleAdsClient, uygulamanızın App.config / Web.config içinde belirtilen ayarları kullanarak bir kullanıcı nesnesi oluşturan varsayılan bir oluşturucu sağlar. Yapılandırma seçenekleri için Yapılandırma kılavuzuna bakın.

// Create a new GoogleAdsClient with the App.config settings.
GoogleAdsClient user = new GoogleAdsClient();

Hizmet oluştur

GoogleAdsClient, bir GetService hizmeti oluşturmak için kullanılabilecek bir yöntem sağlar.

CampaignServiceClient campaignService = client.GetService(Services.V20.CampaignService);
// Now make calls to CampaignService.

Desteklenen tüm API sürümlerini ve hizmetlerini numaralandıran bir Services sınıfı sağlıyoruz. GetService yöntemi, hizmet oluşturulurken bu numaralandırma nesnelerini bağımsız değişken olarak kabul eder. Örneğin, Google Ads API'nin V20 sürümü için CampaignServiceClient örneği oluşturmak üzere önceki örnekte gösterildiği gibi GoogleAdsClient.GetService yöntemini bağımsız değişken olarak Services.V20.CampaignService ile çağırmanız gerekir.

İş parçacığı güvenliği

Bir iş parçacığındaki örnekte yaptığınız yapılandırma değişiklikleri diğer iş parçacıklarında oluşturduğunuz hizmetleri etkileyebileceğinden, birden fazla iş parçacığı arasında GoogleAdsClient örneği paylaşmak güvenli değildir. GoogleAdsClient örneğinden yeni hizmet örnekleri alma ve birden fazla hizmete paralel olarak çağrı yapma gibi işlemler iş parçacığı açısından güvenlidir.

Çok iş parçacıklı bir uygulama aşağıdaki gibi görünür:

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.
  ...
}

.NET Framework uygulamalarında donmaları önleme

Senkron yöntemler, .NET Framework uygulamalarınızın bazılarının donmasına neden olabilir. Yaygın bir örnek, WinForm uygulamasının bir etkinlik işleyici yönteminden API çağrıları yapmaktır.

Bu sorunu çözmenin iki yolu vardır:

  1. Eski Grpc kitaplığını kullanın.

    Varsayılan Grpc.Net.Client kitaplığı yerine eski Grpc.Core kitaplığını kullanmak için GoogleAdsConfig öğesinin UseGrpcCore özelliğini ayarlayabilirsiniz. Bu yöntem .NET Framework uygulamalarında kapsamlı bir şekilde test edilmediğinden sorunu çözmeyebilir. Örnek snippet:

    GoogleAdsConfig config = new GoogleAdsConfig();
    config.UseGrpcCore = true;
    GoogleAdsClient client = new GoogleAdsClient(config);
    
  2. Eşzamansız yöntemler kullanın.

    Donmaları önlemek için eşzamansız yöntemleri kullanabilirsiniz. Aşağıda bazı örnekler verilmiştir:

    SearchStream

    SearchStream() için bir arama yapılır ve sonuçlar liste görünümünde doldurulur.

    private async void button1_Click(object sender, EventArgs e)
    {
    // Get the GoogleAdsService.
    GoogleAdsServiceClient googleAdsService = client.GetService(
        Services.V20.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());
    }

    Kampanya Bütçesi

    Bir CampaignBudget çağrısı oluşturulur ve yeni bütçenin kaynak adı, MessageBox uyarısı kullanılarak gösterilir.

    private async void button2_Click(object sender, EventArgs e)
    {
    // Get the BudgetService.
    CampaignBudgetServiceClient budgetService = client.GetService(
        Services.V20.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);
    }

Hata işleme

Her API çağrısı başarılı olmaz. API çağrılarınız herhangi bir nedenle başarısız olursa sunucu hata verebilir. API hatalarını yakalamak ve uygun şekilde ele almak önemlidir.

Bir API hatası oluştuğunda GoogleAdsException örneği oluşturulur. Bu mesajda, sorunun ne olduğunu anlamanıza yardımcı olacak ayrıntılar yer alır:

// Get the CampaignService.
CampaignServiceClient campaignService = client.GetService(Services.V20.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}");
}