Başlarken

Bu kılavuzda, Google Ads API'yi kullanmaya nasıl başlayacağınıza dair kısa bir genel bakış sunulmaktadır. .NET kitaplığını kullanabilirsiniz.

Kurulum

İstemci kitaplığı ikili dosyaları NuGet kullanılarak dağıtılır. NuGet referansı ekleme Google.Ads.GoogleAds paketinizi ekleyebilirsiniz. kullanır.

Yetkilendirme kurulumu

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

Kimlik bilgisi oluşturmanız gerekiyorsa

Zaten kimlik bilgileriniz varsa

  • GoogleAdsApi düğümünü ve configSections düğümünün altındaki GoogleAdsApi bölümünü GitHub'daki App.config dosyasından App.config/Web.config dosyanıza kopyalayın. bu düğümler otomatik olarak App.config / Web.config dosya
  • Geliştirici jetonunu, istemci kimliğini, istemci sırrını ve yenileme jetonunu uygulamanızın App.config / Web.config bölümüne ekleyin.

App.config iyi dokümanlar bulunsa da aynı zamanda Yapılandırma kılavuzu ve istemci kitaplığını yapılandırmak için alternatif yöntemler kullanmayı dahil etmektir.

API çağrısı yapma

İstemci kitaplığının temel kullanımı aşağıdaki gibidir:

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

GoogleAdsClient örneği oluşturma

Google Ads API .NET kitaplığındaki en önemli sınıf 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, bir varsayılan sağlar oluşturucuda belirtilen ayarları kullanarak bir kullanıcı nesnesi oluşturur uygulamanın App.config / Web.config. 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, Ads hizmeti oluşturmak için kullanılabilecek bir GetService yöntemi sağlar.

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

Desteklenen tüm API sürümlerini ve hizmetlerini listeleyen bir Services sınıfı sağlarız. GetService yöntemi, hizmeti oluştururken bu listeleme nesnelerini bağımsız değişken olarak kabul eder. Örneğin, Google Ads API'nin V18 sürümü için CampaignServiceClient, şununla GoogleAdsClient.GetService yöntemini çağırmalısınız: Gösterildiği gibi, bağımsız değişken olarak Services.V18.CampaignService ele alalım.

Mesaj dizisi güvenliği

Bir GoogleAdsClient örneğini birden fazla iş parçacığı arasında paylaşmak güvenli değildir. bir iş parçacığındaki örnekte yaptığınız yapılandırma değişiklikleri diğer ileti dizilerinde oluşturduğunuz hizmetleri de etkileyebilir. Müşteri edinme, GoogleAdsClient örneğinden yeni hizmet örnekleri ve 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 donmayı önleme

Senkronize yöntemler, .NET Framework uygulamalarınızın bazılarının donmasına neden olabilir. Bunun yaygın bir örneği, etkinlik işleyici yönteminden API çağrıları yapmaktır. olabilir.

Bu sorunu çözmenin iki yolu vardır:

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

    GoogleAdsConfig öğesinin UseGrpcCore özelliğini, varsayılan Grpc.Net.Client kitaplığı yerine eski Grpc.Core kitaplığını kullanacak şekilde ayarlayabilirsiniz. Bu yöntem, .NET Framework uygulamaları üzerinde kapsamlı bir şekilde test edilmediğinden sorunu çözmeyebilir. Aşağıda örnek bir snippet verilmiştir:

    GoogleAdsConfig config = new GoogleAdsConfig();
    config.UseGrpcCore = true;
    GoogleAdsClient client = new GoogleAdsClient(config);
    

    gRPC destek sayfasında daha fazla bilgi eski Grpc.Core kitaplığı ile varsayılan Grpc.Net.Client kitaplığı.

  2. Eşzamansız yöntemleri kullanın.

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

    SearchStream

    SearchStream() çağrısı yapılır ve sonuçlar gösterilir bir liste görünümünde doldurulabilir.

    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());
    }

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

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.

API hatası oluştuğunda bir GoogleAdsException örneği oluşturulur. İçinde ayrıntılara dikkat edin:

// 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}");
}