Guida introduttiva

Questa guida fornisce una breve panoramica su come iniziare a utilizzare l'API Google Ads. .NET.

Installazione

I file binari della libreria client vengono distribuiti tramite NuGet. Aggiungi un riferimento NuGet alle Google.Ads.GoogleAds del progetto nel tuo progetto da utilizzare nella libreria client.

configura le autorizzazioni

Per autorizzare le chiamate API, devi specificare l'ID client, il client secret il token di aggiornamento e il token sviluppatore nella libreria.

Se devi generare le credenziali

Se disponi già delle credenziali

  • Copia il nodo GoogleAdsApi e la sezione GoogleAdsApi sotto il configSections nodo dal file App.config in GitHub nel file App.config / Web.config. Se hai utilizzato NuGet per installare pacchetto, questi nodi verranno inseriti automaticamente File App.config / Web.config.
  • Includi il token sviluppatore, l'ID client, il client secret e il token di aggiornamento nel file App.config / Web.config della tua app.

La App.config incluso in GitHub sia ben documentato, ma puoi fare riferimento anche Guida alla configurazione per saperne di più e per usare metodi alternativi per configurare la libreria client, come le variabili di ambiente.

Esegui una chiamata API

L'utilizzo di base della libreria client è il seguente:

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

Crea un'istanza di Google AdsClient

La classe più importante nella libreria .NET dell'API Google Ads è il GoogleAdsClient corso. Consente di creare una classe di servizio preconfigurata che può essere utilizzato per effettuare chiamate API. GoogleAdsClient fornisce un valore predefinito che crea un oggetto utente utilizzando le impostazioni specificate App.config / Web.config dell'app. Fai riferimento alla sezione Configurazione guida per la configurazione le opzioni di CPU e memoria disponibili.

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

Creare un servizio

GoogleAdsClient fornisce un metodo GetService che può essere utilizzato per creare un Google Ads.

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

Forniamo una classe Services che elenca tutte le versioni API supportate e i servizi di machine learning. Il metodo GetService accetta questi oggetti di enumerazione come argomento durante la creazione del servizio. Ad esempio, per creare un'istanza CampaignServiceClient per la versione V17 dell'API Google Ads, devi chiamare il metodo GoogleAdsClient.GetService con Services.V17.CampaignService come argomento, come mostrato dell'esempio precedente.

Sicurezza dei thread

Non è sicuro condividere un'istanza GoogleAdsClient tra più thread, poiché le modifiche alla configurazione apportate su un'istanza in un thread influisce sui servizi che crei su altri thread. Operazioni come ottenere nuove istanze di servizio da un'istanza GoogleAdsClient e l'esecuzione di chiamate a più servizi in parallelo sono sicuri per i thread.

Un'applicazione multithread avrebbe un aspetto simile a questo:

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

Evita i blocchi nelle applicazioni .NET Framework

I metodi sincroni possono causare il malfunzionamento di alcune applicazioni .NET Framework si blocca. Un esempio comune è l'esecuzione di chiamate API da un metodo di gestore di eventi di un'applicazione WinForm.

Puoi risolvere il problema in due modi:

  1. Utilizzare la libreria Grpc precedente.

    Puoi impostare la proprietà UseGrpcCore di GoogleAdsConfig in modo che utilizzi il libreria Grpc.Core precedente anziché la raccolta Grpc.Net.Client predefinita. Questo metodo non è stato testato in modo esaustivo sulle applicazioni .NET Framework, quindi il problema potrebbe non essere risolto. Ecco uno snippet di esempio:

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

    La pagina di assistenza di gRPC contiene ulteriori dettagli sulle differenze tra la libreria Grpc.Core precedente e raccolta predefinita di Grpc.Net.Client.

  2. Utilizza metodi asincroni.

    Puoi utilizzare metodi asincroni per evitare i blocchi. Ecco alcuni esempi:

    SearchStream

    Viene eseguita una chiamata a SearchStream() e i risultati vengono in una visualizzazione elenco.

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

    Budget della campagna

    Viene creata una chiamata CampaignBudget e il nome risorsa del nuovo budget è visualizzata tramite un avviso 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);
    }
    

Gestione degli errori

Non tutte le chiamate API avranno esito positivo. Il server può generare errori se le tue chiamate API per un motivo non determinato. È importante acquisire gli errori dell'API e gestirli in modo appropriato.

Quando si verifica un errore dell'API, viene generata un'istanza GoogleAdsException. Ha informazioni dettagliate per aiutarti a capire cosa non ha funzionato:

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