Temel kullanım

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


// 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 örneği oluşturma

Google Ads API .NET kitaplığındaki en önemli sınıflar 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 nesnesini yapılandırmak için bir GoogleAdsConfig nesnesi oluşturmanız ve gerekli ayarları yapmanız gerekir. Daha fazla bilgi edinmek için yapılandırma kılavuzuna bakın.


// 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 = ******;

Hizmet oluştur

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

CampaignServiceClient campaignService = client.GetService(
    Services.V21.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 V21 sürümü için CampaignServiceClient örneği oluşturmak üzere önceki örnekte gösterildiği gibi GoogleAdsClient.GetService yöntemini Services.V21.CampaignService bağımsız değişkeniyle çağırmanız gerekir.

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:

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

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

Bir iş parçacığında bir örnek üzerinde 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 bir GoogleAdsClient örneğini 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.
  ...
}

Uygulamanızın yanıt vermesini sağlama

Google Ads API API yöntemi çağrılarının tamamlanması, isteklerin boyutuna bağlı olarak biraz zaman alabilir. Uygulamanızın yanıt vermeye devam etmesini sağlamak için aşağıdaki adımları uygulamanızı öneririz:

Grpc.Core kitaplığını kullanma

.NET Framework'ü hedefleyen ve ASP.NET Web Forms veya WinForms uygulaması gibi eski bir teknoloji kullanan bir uygulama geliştiriyorsanız eski Grpc.Core kitaplığını aşağıdaki şekilde kullanmanızı öneririz:

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