NetSuite RESTlets をビューとしてアクセスする方法
CData ドライバー(JDBC、ODBC、API Server、ADO.NET、SSIS、BizTalk、Excel)は、さまざまなデータソースへの標準ベースの SQL アクセスを実装し、サードパーティツールとの相互運用を可能にします。CData ドライバーを使用すると、NetSuite データに関するレポートを作成できるだけでなく、既存のレポートにもアクセスできます。この記事では、NetSuite の RESTlet にクエリを実行する方法を説明します。
NetSuite 保存済み検索への SQL アクセス
NetSuite RESTlets は、RESTful の原則に従って NetSuite データとやり取りするサーバーサイドスクリプトです。CData ドライバーでは RESTlets のサポートが追加されており、NetSuite UI に表示されるとおりに保存済み検索への SQL アクセスが可能です。他のテーブルとの JOIN、フィールドに対する数式、集計など、レポートの複雑さに関係なく、保存済み検索の結果をすばやく簡単に確認できます。以下のスクリーンショットは、NetSuite UI での保存済み検索(左)と、CData ADO.NET Provider を使用した Visual Studio Server Explorer での同じ結果(右)を示しています。

保存済み検索の結果を表示するには、CreateRESTletSchema ストアドプロシージャを使用して RESTlets のビュー(読み取り専用テーブル)を作成します。このストアドプロシージャを使用するには、NetSuite に RESTlet をデプロイし、Deployment ID と Script ID、および処理したい保存済み検索の ID をメモしてから、ストアドプロシージャを呼び出します。
NetSuite での RESTlet のデプロイ
以下の手順に従って、含まれているスクリプトをデプロイし、SELECT クエリを実行して RESTlet を実行します:
SuiteScript の有効化
Setup -> Company -> Enable Features に移動します。SuiteCloud タブで、Client SuiteScript、Server SuiteScript、SuiteScript Server pages のオプションがすべて有効になっていることを確認してください。
SuiteScript ファイルのアップロード
Documents -> Files -> SuiteScripts に移動します。Add File ボタンをクリックします。CData ADO.NET Provider for NetSuite 2018 に付属している search_script.js スクリプトをアップロードします。このファイルは、インストールディレクトリの db フォルダにあります。
Script Record の作成
Customization -> Scripting -> Scripts -> New に移動します。メニューから search_script.js を見つけて選択し、Create Script Record をクリックします。
Script Record のデプロイ
スクリプトに名前を付け、Deployments タブでタイトルを追加します。次に Save をクリックします。これにより、デプロイメントが作成されます。
Deployment ID と Script ID の取得
Script Record にデプロイメントへのリンクがあります。リンクをたどってデプロイメントに移動します。または、Customization -> Scripting -> Script Deployments に移動し、フィルターを使用して作成したデプロイメントを見つけることもできます。デプロイメントレコードには、URL と External URL が表示されます。この URL から Script ID と Deployment ID をメモしてください。たとえば、次の URL /app/site/hosting/restlet.nl?script=999&deploy=1 の場合、Script ID は 999、Deployment ID は 1 です。
保存済み検索 ID の取得
search_script.js を実行するには、保存済み検索の ID を渡す必要があります。Lists -> Search -> Saved Searches に移動し、保存済み検索の ID をメモします。作成日など、常に同じ順序になるカラムで並べ替えられた検索を使用することをお勧めします。これは、NetSuite が結果をキャッシュしないため、結果をページングしている間にデータが変更されると、重複や欠落が発生する可能性があるためです。
CData ドライバーの設定
デプロイ後、CData ドライバーを使用して RESTlet を操作する準備が整います。まず、NetSuite への接続を確立します。
認証の設定
RESTlets は以下の認証メカニズムをサポートしています:
- User/Password:ユーザー/パスワード認証を使用するには、UseSessions 接続プロパティを true に設定する必要があります。
- OAuth:OAuth 接続プロパティに加えて、RESTlet OAuth 認証には AccountId が必要です。
Location プロパティの設定
必要な認証接続プロパティに加えて、Schema セクションの Location 接続プロパティを、スキーマを書き込むフォルダに設定します。接続手順の詳細については、ヘルプドキュメントを参照してください。
スキーマの作成と RESTlet の実行
RESTlet をデプロイし、接続を設定したら、CreateRESTletSchema ストアドプロシージャを呼び出すだけで、RESTlet のテーブルスキーマを作成できます。ストアドプロシージャはスキーマを出力し、.rsd 設定ファイルにも定義されます。テキストエディターでスキーマをカスタマイズできます(詳細はヘルプドキュメントを参照してください)。
ストアドプロシージャの呼び出し
以下は、サンプル入力でストアドプロシージャを呼び出す例です。TableName、ScriptId、DeploymentNumber、SearchId は必須入力であり、FlattenSelects と UseLabels はオプションです(詳細は以下を参照)。
EXEC CreateRESTletSchema @TableName='RESTlet999', @ScriptId='999', @DeploymentNumber='1', @FlattenSelects='true', @SearchID='customsearch795'
-
FlattenSelects:保存済み検索に複数選択カラムが含まれている場合は、このパラメータを false に設定します。このパラメータは、プロバイダーが選択のデータ型(エンティティ/顧客参照など)をどのようにモデル化するかを制御します。
FlattenSelects を false に設定すると、複数選択データは JSON 集計として返されます。
デフォルトでは、プロバイダーは選択に対して2つのカラム(名前用と値用(多くの場合 ID))を公開します。保存済み検索に複数選択カラムが含まれている場合、これは正しく機能しません。RESTlet のメタデータには、複数選択と単一選択のカラムを区別するものがありません。 -
UseLabels:プロバイダーがカラム名を保存済み検索結果に表示されるものに一致させるか、保存済み検索自体から返される API 名をそのまま使用するかを決定します。UseLabels を true に設定した場合でも、名前は英数字とアンダースコアに変換されることに注意してください。また、保存済み検索で同一の名前のラベルが返される場合があることにも注意してください。
このような場合、重複する名前には一意性を保つために番号が付加されます。
RESTlet の実行
スキーマを定義したら、簡単な SELECT クエリで RESTlet からデータを取得できます。例:
SELECT * FROM RESTlet999
注意:ページングは CData ドライバーによって自動的に処理されます。
スキーマの微調整
テキストエディターを使用して、カラムの動作やスキーマのその他の側面をカスタマイズできます。指定した Location に書き込まれた .rsd ファイルを開きます。rsb:info セクションでカラムの動作を変更します。たとえば、カラム名を変更するには、<attr name=""> セクションを変更します。
考慮事項
- 現在、ドライバーはインストールに含まれている search_script.js スクリプトの形式に準拠したレスポンスを持つ RESTlets のみをサポートしています。
- ドライバーは結果に対するサーバーサイドのフィルタリングをサポートしていません。クエリの実行を高速化するには、保存済み検索自体ですべてのフィルターを定義してください。そうしないと、データ取得後にクライアントサイドのフィルターが適用される場合があります。
詳細情報と無料トライアル
CData の標準ベースの NetSuite ドライバーにより、BI、レポート、ETL、カスタムアプリケーションをライブの NetSuite データに接続できます。保存済み検索の結果を処理する RESTlets の結果も含まれます。ドライバーの詳細については NetSuite ページをご覧いただき、30日間の無料トライアルをダウンロードして、今すぐお試しください。