スタートガイド

<ph type="x-smartling-placeholder">

このガイドでは、Google 広告 API .NET ライブラリの使用を開始する方法について簡単に説明します。

インストール

クライアント ライブラリのバイナリは NuGet を使用して配布されます。クライアント ライブラリを使用するには、プロジェクトの Google.Ads.GoogleAds パッケージに NuGet 参照を追加します。

認可を設定する

API 呼び出しを承認するには、クライアント ID、クライアント シークレット、更新トークン、開発者トークンをライブラリに指定する必要があります。

認証情報を生成する必要がある場合は、

すでに認証情報がある場合

  • GitHub の App.config ファイルから、App.config / Web.config ファイルに GoogleAdsApi ノードと configSections ノードの下の GoogleAdsApi セクションをコピーします。NuGet を使用して 作成された場合、これらのノードは自動的に App.config / Web.config ファイル。
  • アプリの App.config / Web.config に、デベロッパー トークン、クライアント ID、クライアント シークレット、更新トークンを追加します。

GitHub に含まれている App.config ファイルには詳細なドキュメントが用意されていますが、構成ガイドを参照して詳細を確認したり、環境変数など、クライアント ライブラリを構成する別の方法を使用したりすることもできます。

API 呼び出しを行う

クライアント ライブラリの基本的な使用方法は次のとおりです。

// 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 インスタンスを作成する

Google Ads API .NET ライブラリで最も重要なクラスは、 GoogleAdsClient クラス。これにより、API 呼び出しに使用できる事前構成済みのサービスクラスを作成できます。GoogleAdsClient には、アプリの App.config / Web.config で指定された設定を使用してユーザー オブジェクトを作成するデフォルトのコンストラクタが用意されています。構成オプションについては、構成ガイドをご覧ください。

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

Service を作成する

GoogleAdsClient は、変数の作成に使用できる GetService メソッドを提供します。 。

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

サポートされているすべての API バージョンを列挙し、Services 提供します。GetService メソッドは、これらの列挙型オブジェクトを引数として受け取ります。 指定する必要があります。たとえば、Google Ads API のバージョン V18CampaignServiceClient のインスタンスを作成するには、前の例に示すように、Services.V18.CampaignService を引数として GoogleAdsClient.GetService メソッドを呼び出す必要があります。

スレッドの安全性

1 つのスレッドのインスタンスで行った構成変更が、他のスレッドで作成したサービスに影響する可能性があるため、複数のスレッド間で GoogleAdsClient インスタンスを共有することは安全ではありません。たとえば、 GoogleAdsClient インスタンスから新しいサービス インスタンスを取得し、 スレッドセーフです。

マルチスレッド アプリケーションは次のようになります。

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 アプリケーションのフリーズを回避する

同期メソッドを使用すると、.NET Framework アプリケーションによって 確認します。一般的な例としては、WinForm アプリケーションのイベント ハンドラ メソッドから API 呼び出しを行うことが挙げられます。

この問題に対処するには、次の 2 つの方法があります。

  1. 以前の gRPC ライブラリを使用します。

    デフォルトの Grpc.Net.Client ライブラリではなく、従来の Grpc.Core ライブラリを使用するように、GoogleAdsConfigUseGrpcCore プロパティを設定できます。この方法は、.NET Framework アプリケーションで十分にテストされていません。 問題が解決しない可能性があります。スニペットの例を次に示します。

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

    従来の Grpc.Core ライブラリとデフォルトの Grpc.Net.Client ライブラリの違いについては、gRPC サポートページをご覧ください。

  2. 非同期メソッドを使用します。

    非同期メソッドを使用すると、フリーズを回避できます。次に例を示します。

    SearchStream

    SearchStream() が呼び出され、結果がリストビューに入力されます。

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

    キャンペーン予算

    CampaignBudget の呼び出しが作成され、新しい予算のリソース名が「 MessageBox アラートを使用して表示されます。

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

エラー処理

すべての API 呼び出しが成功するとは限りません。API 呼び出しが原因でサーバーがエラーをスローする可能性がある 失敗します。API エラーをキャプチャして処理することが重要です。 適切に分類します

GoogleAdsException インスタンスは、API エラーが発生したときにスローされます。問題の原因を特定するのに役立つ詳細情報が含まれています。

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