1. はじめに
NetSuiteは、ERPとして企業の業務をサポートするだけでなく、外部システムと統合するためのAPI機能も提供しています。本記事では、NetSuiteに外部データを送信するためのカスタムAPIをRestletで作成し、PostmanでそのAPIをテストする方法を紹介します。また、トークン認証を使用したセキュアなアクセス設定についても解説します。
2. Restletとは?
Restletは、NetSuiteでカスタムAPIを構築するためのスクリプトで、NetSuiteと外部システム間のデータ連携を行います。具体的には、Restletを使って外部システムからリクエストを受け取り、NetSuite内でレコードの作成や更新を行います。
3. Restletスクリプトの作成
まず、NetSuiteでRestletスクリプトを作成します。
スクリプト作成手順:
1. NetSuiteのナビゲーションメニュー から、カスタマイズ > スクリプト > スクリプトを作成
を選択します。
2. 新しい Restlet スクリプトを作成し、次のコードを追加します。
/**
* @NApiVersion 2.x
* @NScriptType Restlet
*/
define(['N/record', 'N/log'], function(record, log) {
function createRecord(data) {
try {
var expenseReport = record.create({
type: record.Type.EXPENSE_REPORT,
isDynamic: true
});
expenseReport.setValue({
fieldId: 'entity',
value: data.entityId
});
expenseReport.setValue({
fieldId: 'account',
value: data.accountId
});
expenseReport.setValue({
fieldId: 'subsidiary',
value: data.subsidiaryId
});
expenseReport.selectNewLine({
sublistId: 'expense'
});
expenseReport.setCurrentSublistValue({
sublistId: 'expense',
fieldId: 'category',
value: data.category
});
expenseReport.setCurrentSublistValue({
sublistId: 'expense',
fieldId: 'amount',
value: data.amount
});
expenseReport.commitLine({
sublistId: 'expense'
});
var recordId = expenseReport.save();
log.debug({
title: 'Expense Report Created',
details: 'Record ID: ' + recordId
});
return { success: true, recordId: recordId };
} catch (error) {
log.error({
title: 'Error creating Expense Report',
details: error.message
});
return { success: false, error: error.message };
}
}
return {
post: createRecord
};
});
このスクリプトは、外部システムから送信されたデータを使用して、NetSuite上で経費精算書を作成する機能を提供します。
4. Restletのデプロイ
Restletスクリプトを作成した後、それをデプロイしてURLを取得します。
Restletのデプロイ手順:
1. NetSuiteのナビゲーションメニュー から、カスタマイズ > スクリプト > スクリプトのデプロイ
を選択します。
2. 作成したRestletスクリプトをデプロイします。
3. デプロイメントID や ステータス を確認し、ステータスを「リリース済み」に設定します。
4. デプロイが成功すると、Restletの URL が表示されます。このURLが、外部システムからアクセスするためのエンドポイントになります。
5. トークン認証の設定
Restletを外部から呼び出すには、NetSuiteの統合設定およびトークンベース認証(TBA: Token-Based Authentication)の設定が必要です。
統合設定手順:
1. 設定> インテグレーション > 新規 を選択し、新しい統合を作成します。
2. 統合名 を設定し、「トークンベースの認証」を有効化します。
3. 作成後、NetSuiteが生成する クライアント資格情報のキー と シークレットキーを控えておきます。(作成時にしか表示されない)
ユーザー/ロールのトークン設定手順:
1. ユーザー/ロール > アクセストークン > 新規 を選択します。
2. 統合設定で作成した統合とユーザー/ロールを選択し、トークンを生成します。
3. トークンID と トークンシークレット を控えておきます。(作成時にしか表示されない)
これで、外部システムがNetSuiteのRestletにアクセスできるようになります。
6. Postmanによるテスト
統合とトークンが設定できたら、Postmanを使用してRestlet APIをテストします。
Postmanの設定手順:
1. Postmanを起動し、今回は新しい POSTリクエスト を作成します。
2. URLには、前述のRestletのデプロイで取得したエンドポイントURLを指定します。
3. 認証 には、NetSuiteで発行された OAuth 1.0 を使用します。入力値は以下の値を入力します:
・Consumer Key: 統合設定で取得した値
・Consumer Secret: 統合設定で取得した値
・Token: アクセストークンで生成されたトークンID
・Token Secret: アクセストークンで生成されたトークンシークレット
これらの認証情報を正しく設定することで、外部システムがNetSuiteのAPI(Restletなど)にアクセスできるようになります。
4. Body に、以下のようなJSONデータを設定します。
{
"entityId": 123,
"accountId": 456,
"subsidiaryId": 789,
"category": 101112,
"amount": 500
}
5. 設定が完了したら、Send ボタンをクリックしてリクエストを送信します。
7. 結果の確認
Postmanでリクエストを送信すると、NetSuite側で経費精算書が作成され、レコードIDが返されます。さらに、NetSuiteのログに「Expense Report Created」と記録されているか確認し、正常にデータが処理されたことを確認します。
8. おわりに
この記事では、NetSuiteのRestletを用いて外部システムからデータを連携する方法を紹介しました。Postmanを使ったテストで、Restlet APIの動作確認が容易にできること、トークンベース認証でセキュリティを確保しながら外部連携を進めることができる点を解説しました。この手法を活用することで、NetSuiteと外部システム間の安全かつ効率的なデータ連携を実現できます。