設定

Google Ads API クライアント ライブラリには、ライブラリの動作をカスタマイズするために使用できる構成設定がいくつか用意されています。

実行時にライブラリを構成する

クライアント ライブラリを構成する推奨の方法は、実行時に GoogleAdsConfig オブジェクトを初期化することです。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
    OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_REFRESH_TOKEN"
};

GoogleAdsClient client = new GoogleAdsClient(config);

代替の構成オプション

ライブラリには、構成設定を読み込むための追加オプションも用意されています。これらのオプションを有効にするには、プロジェクトの Google.Ads.GoogleAds.Extensions パッケージに NuGet 参照を追加します。

これらのオプションのいずれかを使用する場合、構成設定は自動的に取得されません。次のセクションに示すように、明示的に読み込む必要があります。外部ファイルまたはストリームから設定を読み込む場合は、ファイル I/O 例外(FileNotFoundException や UnauthorizedAccessException など)を処理してください。

App.config を使用する

Google Ads API に固有の設定はすべて、App.config ファイルの GoogleAdsApi ノードに保存されます。一般的な構成の App.config は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="GoogleAdsApi"
             type="System.Configuration.DictionarySectionHandler" />
  </configSections>
  <GoogleAdsApi>
    <!-- Set the service timeout in milliseconds. -->
    <add key="Timeout" value="2000" />

    <!-- Proxy settings for library. -->
    <add key="ProxyServer" value="http://localhost:8888" />
    <add key="ProxyUser" value="" />
    <add key="ProxyPassword" value="" />
    <add key="ProxyDomain" value="" />

    <!-- OAuth2 settings -->
    <add key="OAuth2Mode" value="APPLICATION" />
    <add key="OAuth2ClientId"
         value="INSERT_CLIENT_ID.apps.googleusercontent.com" />
    <add key="OAuth2ClientSecret" value="INSERT_CLIENT_SECRET" />
    <add key="OAuth2RefreshToken" value="INSERT_REFRESH_TOKEN" />
  </GoogleAdsApi>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
</configuration>

App.config ファイルから構成設定を読み込むには、GoogleAdsConfig オブジェクトで LoadFromDefaultAppConfigSection メソッドを呼び出します。

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);

別の App.config ファイルを指定する

App.config を整理したい場合は、 ライブラリ固有の構成を独自の構成ファイルに移動できます。 configSource プロパティを使用します。

  1. App.config で configSource を指定します。外部構成ファイルを参照するように App.config を変更します。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi"
                 type="System.Configuration.DictionarySectionHandler" />
      </configSections>
      <GoogleAdsApi configSource="GoogleAdsApi.config" />
    </configuration>
    
  2. 構成ファイルの内容を指定します。configSource`configSource`(GoogleAdsApi.config`GoogleAdsApi.config`)で指定した名前で別の構成ファイルを作成し、GoogleAdsApi`GoogleAdsApi` 構成ノードを App.config`App.config` からこのファイルに移動します。

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. .csproj のビルドルールを更新します。新しい構成ファイルをプロジェクトに含め、[出力ディレクトリにコピー] プロパティを [常にコピー] に設定します。プロジェクトを再ビルドして実行すると、アプリケーションは新しい構成ファイルから値を取得します。

カスタム JSON ファイルを使用する

IConfigurationRoot インスタンスを使用して、 クライアント ライブラリを構成できます。

JSON ファイルを作成する

App.config ファイルと同様の構造を持つ GoogleAdsApi.json という名前の JSON ファイルを作成します。

{
  "Timeout": "2000",
  "ProxyServer": "http://localhost:8888",
  "ProxyUser": "",
  "ProxyPassword": "",
  "ProxyDomain": "",
  "OAuth2Mode": "APPLICATION",
  "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
  "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
  "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}

構成を読み込む

次に、JSON ファイルを IConfigurationRoot に読み込みます。

ConfigurationBuilder builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("GoogleAdsApi.json");
IConfigurationRoot configRoot = builder.Build();

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationRoot(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);

settings.json を使用する

ここでのプロセスは、カスタム JSON ファイルを使用する場合と似ていますが、キーは GoogleAdsApi というセクション名内にある必要があります。

{
  "GoogleAdsApi": {
    "OAuth2Mode": "APPLICATION",
    "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
    "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
    "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
  }
}

次に、アプリケーションの IConfiguration インスタンス(ASP.NET Core によって挿入されたもの、または ConfigurationBuilder でビルドされたものなど)から GoogleAdsApi セクションを抽出します。

IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);

または、 config.LoadFromSettingsJson(filePath, "GoogleAdsApi") を使用してパスから settings.json ファイルを直接読み込むか、 config.TryLoadFromEnvironmentFilePath を使用して GOOGLE_ADS_CONFIGURATION_FILE_PATH 環境変数(EnvironmentVariableNames.CONFIG_FILE_PATH)から読み込むこともできます。

環境変数を使用する

環境変数を使用して GoogleAdsClient を初期化することもできます。

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);

サポートされている環境変数の完全なリストをご覧ください。

汎用ストリームを使用する

暗号化されたものを含め、汎用ストリームから構成またはその一部を読み込むこともできます。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    // Set some configuration properties in code.
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
};

// Load your encrypted data from a file and dispose of the streams properly.
using (CryptoStream strm = GetEncryptedCredentialsStream())
using (StreamReader rdr = new StreamReader(strm))
{
    // Configure the OAuth credentials from the encrypted stream.
    config.LoadOAuth2SecretsFromStream(rdr);
}

GoogleAdsClient client = new GoogleAdsClient(config);

構成フィールド

次のセクションでは、Google 広告 .NET ライブラリでサポートされている設定について説明します。

接続設定

  • Timeout: このキーを使用して、サービス タイムアウトをミリ秒単位で設定します。デフォルト値は、method_config/timeout 設定に基づいて googleads_grpc_service_config.json に設定されます。API 呼び出しの最大時間を短くする必要がある場合は、小さい値を設定します。タイムアウトは 2 時間以上に設定できますが、API は実行時間が非常に長いリクエストをタイムアウトさせ、DEADLINE_EXCEEDED エラーを返すことがあります。
  • ProxyServer: プロキシを使用してインターネットに接続する場合は、これを HTTP プロキシ サーバーの URL に設定します。
  • ProxyUser: プロキシ サーバーに対する認証に必要なユーザー名に設定します。ユーザー名が不要な場合は、空白のままにします。
  • ProxyPassword: ProxyUser に値を設定した場合は、ProxyUser のパスワードに設定します。
  • ProxyDomain: プロキシ サーバーで設定が必要な場合は、ProxyUser のドメインに設定します。
  • MaxReceiveMessageLengthInBytes: この設定を使用して、クライアント ライブラリが処理できる API レスポンスの最大サイズを増やします。デフォルト値は 64 MB です。
  • MaxMetadataSizeInBytes: この設定を使用して、クライアント ライブラリが処理できる API エラー レスポンスの最大サイズを増やします。デフォルト値は 16 MB です。

MaxReceiveMessageLengthInBytes と MaxMetadataSizeInBytes の設定を調整して、特定の ResourceExhausted エラーを修正します。これらの設定は、次の形式のエラーに対処します。

Status(StatusCode="ResourceExhausted",Detail="Received
message larger than max (423184132 versus 67108864)"

この例では、メッセージ サイズ(423184132 bytes)がライブラリで処理できるサイズ(67108864 bytes)よりも大きいため、エラーが発生しています。このエラーを回避するには、MaxReceiveMessageLengthInBytes を 500000000 に増やします。このエラーは、コードが非常に大きなレスポンス オブジェクト(大きな SearchGoogleAdsResponse など)を処理したことも示しています。これにより、.NET のラージ オブジェクト ヒープが原因でコードのパフォーマンスに影響する可能性があります。パフォーマンスが懸念される場合は、API 呼び出しの再編成方法やアプリの一部の再設計を検討する必要があるかもしれません。

OAuth2 の設定

OAuth 2.0 を使用して Google Ads API サーバーに対する呼び出しを承認する場合は、次の構成キーを設定する必要があります。

  • AuthorizationMethod: OAuth2 に設定します。
  • OAuth2Mode: APPLICATION または SERVICE_ACCOUNT に設定します。
  • OAuth2ClientId: この値を OAuth 2.0 クライアント ID に設定します。
  • OAuth2ClientSecret: この値を OAuth 2.0 クライアント シークレットに設定します。
  • OAuth2Scope: 複数の API の OAuth 2.0 トークンを承認する場合は、この値を異なるスコープに設定します。この設定は省略可能です。
  • UseApplicationDefaultCredentials: この値を true に設定すると、アプリケーションのデフォルト認証情報を使用して認証されます(Google.Ads.GoogleAds v24.1.0 以降でサポートされています。config.LoadFromEnvironmentVariables() は、接頭辞のない USE_APPLICATION_DEFAULT_CREDENTIALS 環境変数を読み取ります)。
  • Credentials:(ランタイムのみ、v27.0.0 以降でサポート) 事前に作成された ICredential または GoogleCredential インスタンスを、実行時に GoogleAdsConfig に直接挿入します。

OAuth2Mode == APPLICATION を使用している場合は、次の追加の構成キーを設定する必要があります。

  • OAuth2RefreshToken: OAuth 2.0 トークンを再利用する場合は、この値を事前に生成された OAuth 2.0 更新トークンに設定します。この設定は省略可能です。
  • OAuth2RedirectUri: この値を OAuth 2.0 リダイレクト URL に設定します。この設定は省略可能です。

詳細については、次のガイドをご覧ください。

OAuth2Mode == SERVICE_ACCOUNT を使用している場合は、次の追加の構成キーを設定する必要があります。

  • OAuth2SecretsJsonPath: この値を OAuth 2.0 JSON キーファイルのパスに設定します。
  • OAuth2PrnEmail: Google Workspace ドメイン全体の委任を使用する場合は、この値を権限を借用するアカウントのメールアドレスに設定します。この設定は省略可能です。

詳細については、OAuth サービス アカウント フローガイドをご覧ください。

転送設定

  • UseGrpcCore: この設定を true に設定すると、基盤となるトランスポート層として Grpc.Core ライブラリが使用されます。 ライブラリGrpc.Coreを使用するをご覧ください。

Google Ads API の設定

以下は、Google Ads API に固有の設定です。

  • LoginCustomerId: これは、リクエストで使用する承認済み顧客の顧客 ID です。ハイフン(-)は含めません。
  • LinkedCustomerId: このヘッダーは、Google 広告 UI のリンクされたアカウント(Google Ads API の AccountLink リソース)で権限が付与されている場合に、エンティティのリソースを更新するメソッドでのみ必要です。この値は、指定されたお客様 ID のリソースを更新するデータ プロバイダのお客様 ID に設定します。ハイフン(-)は含めないでください。 リンク済みアカウントの詳細をご覧ください。