Google Ads API クライアント ライブラリには、ライブラリの動作をカスタマイズするための構成設定がいくつか用意されています。
実行時にライブラリを構成する
クライアント ライブラリを構成する推奨の方法は、実行時に GoogleAdsConfig オブジェクトを初期化することです。
using Google.Ads.Gax.Config;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_REFRESH_TOKEN",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
代替構成オプション
このライブラリには、appsettings.json、カスタム JSON ファイル、環境変数、App.config から構成設定を読み込むための追加オプションも用意されています。これらを有効にするには、プロジェクトに Google.Ads.GoogleAds.Extensions NuGet パッケージをインストールします。
dotnet add package Google.Ads.GoogleAds.Extensions
これらのオプションのいずれかを使用する場合、構成設定は自動的に取得されません。次のセクションに示すように、明示的に読み込む必要があります。外部ファイルまたはストリームから設定を読み込む場合は、ファイル I/O 例外(FileNotFoundException や UnauthorizedAccessException など)を処理してください。
appsettings.json または settings.json を使用する
.NET 8.0 アプリケーションと ASP.NET Core アプリケーションでは、appsettings.json(または settings.json)の GoogleAdsApi セクション内に構成キーを配置します。
{
"GoogleAdsApi": {
"LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
}
次に、アプリケーションの IConfiguration インスタンス(ASP.NET Core によって挿入されたインスタンスや ConfigurationBuilder でビルドされたインスタンスなど)から GoogleAdsApi セクションを抽出し、LoadFromConfigurationSection で読み込みます。
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;
IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);
または、LoadFromSettingsJson を使用して、パスで appsettings.json ファイルまたは settings.json ファイルを直接読み込むこともできます。
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromSettingsJson("appsettings.json", "GoogleAdsApi");
GoogleAdsClient client = new GoogleAdsClient(config);
config.TryLoadFromEnvironmentFilePath を呼び出して、GOOGLE_ADS_CONFIGURATION_FILE_PATH 環境変数(EnvironmentVariableNames.CONFIG_FILE_PATH)からパスを読み込むこともできます。
カスタム JSON ファイルを使用する
IConfigurationRoot インスタンスを使用して、最上位の GoogleAdsApi セクションのないフラットな JSON ファイルを読み込むこともできます。
JSON ファイルを作成する
ルートレベルで構成キーを定義する GoogleAdsApi.json という名前の JSON ファイルを作成します。
{
"Timeout": "2000",
"ProxyServer": "http://localhost:8888",
"ProxyUser": "",
"ProxyPassword": "",
"ProxyDomain": "",
"LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
構成を読み込む
次に、JSON ファイルを IConfigurationRoot に読み込みます。
using System.IO;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;
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);
環境変数を使用する
環境変数を使用して GoogleAdsClient を初期化することもできます。
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);
サポートされている環境変数の全リストをご覧ください。
App.config を使用する
.NET Framework アプリケーションでは、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="" />
<!-- Google Ads API settings. -->
<add key="LoginCustomerId" value="INSERT_LOGIN_CUSTOMER_ID_HERE" />
<!-- 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 メソッドを呼び出します。
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);
別の App.config ファイルを指定する
App.config が煩雑にならないようにするには、configSource プロパティを使用して、ライブラリ固有の構成を独自の構成ファイルに移動します。
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>構成ファイルの内容を指定します。
configSource(GoogleAdsApi.config)で指定した名前で別の構成ファイルを作成し、GoogleAdsApi構成ノードをApp.configからこのファイルに移動します。<?xml version="1.0" encoding="utf-8" ?> <GoogleAdsApi> <!-- More settings. --> </GoogleAdsApi>.csprojのビルドルールを更新します。新しい構成ファイルをプロジェクトに含め、[出力ディレクトリにコピー] プロパティを [常にコピーする] に設定します。プロジェクトを再ビルドして実行し、アプリケーションが新しい構成ファイルから値を取得するようにします。
汎用ストリームを使用する
また、暗号化されたストリームを含む一般的なストリームから、構成またはその一部を読み込むこともできます。
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: このキーを使用して、サービス タイムアウトをミリ秒単位で設定します。デフォルト値は、googleads_grpc_service_config.jsonのmethod_config/timeout設定に基づいて設定されます。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.GoogleAdsv24.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: 基盤となるトランスポート層としてGrpc.Coreライブラリを使用するには、この設定をtrueに設定します。Grpc.Coreライブラリを使用するをご覧ください。
Google Ads API の設定
以下の設定は Google Ads API に固有のものです。
LoginCustomerId: リクエストで使用する、承認済みのお客様のお客様 ID。ハイフン(-)は含めません。LinkedCustomerId: このヘッダーは、Google 広告管理画面のリンクされたアカウント(Google Ads API のAccountLinkリソース)を介して権限が付与されている場合に、エンティティのリソースを更新するメソッドにのみ必要です。この値は、指定されたお客様 ID のリソースを更新するデータ プロバイダのお客様 ID に設定します。ハイフン(-)なしで設定する必要があります。 リンクされたアカウントの詳細