NetSuiteはカスタムフィールドを豊富にサポートしており、企業ごとに独自の項目を追加して業務データを管理できます。CData NetSuiteドライバーには、これらのカスタムフィールドをどのように扱うかを制御する2つの重要な接続プロパティが用意されています。それが IncludeCustomFieldColumns と CustomFieldPermissions です。本記事では、両プロパティの仕組みと使い分け方を、実際の接続文字列例やよくあるエラーへの対処法とともに解説します。
カスタムフィールドとは
NetSuiteでは標準項目に加え、管理者がビジネス要件に合わせてカスタムフィールドを追加できます。例えば「顧客登録番号」「内部承認コード」「特定業種向けの分類コード」など、標準フィールドには存在しない情報を各レコードに付与できます。
CData NetSuiteドライバーはこれらのカスタムフィールドを、通常のテーブルカラムと同様に扱えるよう設計されています。ただし、カスタムフィールドのメタデータはNetSuiteのAPIを通じて動的に取得するため、いくつかの設定で挙動をコントロールできます。
IncludeCustomFieldColumns
概要
IncludeCustomFieldColumns はブール型(true / false)のプロパティで、カスタムフィールドを各テーブルのカラムとして表示するかどうかを制御します。
設定値 | 挙動 |
|---|
true(デフォルト)
| カスタムフィールドがテーブルの個別カラムとして表示される |
false
| カスタムフィールドはカラムとして表示されない |
動作の詳細
true に設定すると、接続を初めて開いたときにNetSuiteのAPIへメタデータリクエストを送り、カスタムフィールド情報を取得します。取得したメタデータは接続オブジェクト内にキャッシュされ、接続が閉じられると破棄されます。
このため、接続初回のメタデータ取得にはパフォーマンスコストが発生します。カスタムフィールドの数が多い環境では、接続確立まで数秒〜数十秒かかる場合があります。一方で、一度キャッシュされれば以降のクエリはスムーズに実行できます。
SuiteQLスキーマを使用している場合、このプロパティと IncludeCustomRecordTables を true にすることで、カスタムフィールドのメタデータをAPIから正確に取得できます。
接続文字列の例(JDBC)
# カスタムフィールドを有効化する場合(デフォルト)
jdbc:netsuite:AccountId=[your_account_id];AuthScheme=Token;OAuthClientId=[your client id];OAuthClientSecret=[your client secret];OAuthAccessToken=[your token];OAuthAccessTokenSecret=[your token_secret];RoleId=[your_role_id];IncludeCustomFieldColumns=true;
# カスタムフィールドが不要でパフォーマンスを優先する場合
jdbc:netsuite:AccountId=[your_account_id];AuthScheme=Token;OAuthClientId=[your client id];OAuthClientSecret=[your client secret];OAuthAccessToken=[your token];OAuthAccessTokenSecret=[your token secret];RoleId=[your_role_id];IncludeCustomFieldColumns=false;
いつ false にすべきか
以下のシナリオでは false への変更を検討してください。
カスタムフィールドを一切参照しないバッチ処理や定期レポートで、接続のオーバーヘッドを削減したい場合
接続プールを多用しており、接続ごとのメタデータ取得コストを抑えたい場合
接続確立の速度が最優先で、カスタムフィールドへのアクセスは別の接続で行う場合
CustomFieldPermissions
概要
CustomFieldPermissions は文字列型のプロパティで、どの種類のカスタムフィールドのメタデータを取得するかを細かく指定します。カンマ区切りで複数の権限カテゴリを列挙できます。
このプロパティが空(デフォルト)の場合、IncludeCustomFieldColumns の設定が優先されます。値を設定した場合は IncludeCustomFieldColumns の設定を上書きし、指定されたカテゴリのカスタムフィールドのみを取得します。
指定できるカスタムフィールド権限カテゴリ
NetSuiteで利用可能なカスタムフィールド権限カテゴリは以下のとおりです。
カテゴリ名 | 対象 |
|---|
Custom Body Fields
| レコード本体に付与されたカスタムフィールド(受注・請求書など) |
Custom Column Fields
| 明細行(サブリスト)に付与されたカスタムフィールド |
Custom Entity Fields
| 顧客・取引先・従業員など「エンティティ」レコードのカスタムフィールド |
Custom Event Fields
| イベントやタスクに付与されたカスタムフィールド |
Custom Item Fields
| 商品・品目レコードのカスタムフィールド |
Item Number Fields
| 品目番号(シリアル番号・ロット番号)のカスタムフィールド |
Other Custom Fields
| 上記に分類されないその他のカスタムフィールド |
すべてのカスタムフィールドを取得する場合
# プロパティ設定例(すべてのカスタムフィールドを対象にする)
CustomFieldPermissions=Custom Body Fields, Custom Column Fields, Custom Entity Fields,
Custom Event Fields, Custom Item Fields, Item Number Fields, Other Custom Fields
特定カテゴリのみを取得する場合
権限が制限されたロールを使って接続しており、一部のカスタムフィールドしかアクセスできない場合に有効です。例えば、顧客エンティティのカスタムフィールドと商品のカスタムフィールドのみを取得したい場合は次のように設定します。
# プロパティ設定例(一部のカスタムフィールドを対象にする)
CustomFieldPermissions=Custom Entity Fields, Custom Item Fields
両プロパティの優先関係と使い分け
以下の図で関係を整理します。

実務上の推奨設定パターンは以下のとおりです。
パターンA:全カスタムフィールドを取得(開発・調査用途)
IncludeCustomFieldColumns=true
# CustomFieldPermissions は空のまま
パターンB:特定カテゴリのみ取得(本番運用・権限制限環境)
CustomFieldPermissions=Custom Body Fields, Custom Entity Fields
パターンC:カスタムフィールド不要(パフォーマンス最優先)
IncludeCustomFieldColumns=false
まとめ
IncludeCustomFieldColumns と CustomFieldPermissions を適切に設定することで、CData NetSuiteドライバーはカスタムフィールドへのアクセスをより柔軟かつ効率的に制御できます。権限が限定されたロールを使う本番環境では CustomFieldPermissions で必要なカテゴリのみを指定し、パフォーマンスとセキュリティの両立を図ることが重要です。