ディスカッション
AIを用いた自動化で請求書処理を合理化
AIを用いた考察を使用して、計画と予測を迅速化
SuiteWorldまであと41日となりました。以下の最新情報をご確認ください。
アジェンダビルダー公開
SuiteWorld On Airの登録受付開始
新しいNetSuite Prompt Studioコンテスト
その他の最新情報も!
詳細はこのスレッドでご確認ください!
SuiteScript2.0ユーザーイベントスクリプトボタンのクリック時にRESTletを実行する方法
適用
製品: NetSuite 2021.1
シナリオ
異なるスクリプトからRESTletを呼び出し、管理者として実行するには、サーバー側スクリプトから呼び出しを行う必要があります。これにより、ロールを含むユーザー資格情報を指定できます。
解決策
ユーザーイベントスクリプトから作成されたカスタムボタンからRESTletを呼び出して実行するには、一連のスクリプトをトリガーする必要があります。イメージは次のとおりです。クライアントスクリプトからon-click機能を呼び出すユーザーイベントスクリプトによりボタンを作成します。クライアントスクリプトはSuiteletを呼び出し、SuiteletはRESTletを呼び出します。ユーザーイベントスクリプトはサーバー側でありますが、カスタムボタンの機能はクライアント側のスクリプトから取得されます。そのため、RESTletの呼び出しがサーバー側のスクリプトから行われるように、追加のSuiteletが必要です。
サンプルコードスニペットは次のとおりです。
使用するもジュル
- N/url
- N/https
- N/http
1. Suitelet (サンプルスクリプトの内部ID: 203, デプロイメントID: 1)
function onRequest(context) {
log.debug(context)
if(context.request.method == 'GET')
{
log.debug('Got Here')
var url = 'https://.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=203&deploy=1';
var headers ={
"Content-type": "application/json",
"Authorization": "NLAuth nlauth_email=test@netsuite.com," +
"nlauth_signature=sampleP@ssW0rd!," +
"nlauth_account=12345," +
"nlauth_role = 3"
};
var response = https.request({
method: http.Method.GET,
url: url,
headers: headers
});
log.debug(response.body);
}
}
}
2. ユーザイベントスクリプト
function beforeLoad(scriptContext) {
var resURL = url.resolveScript({
scriptId: 'customscript205',
deploymentId: 'customdeploy1'
});
log.debug(resURL)
var form = scriptContext.form;
form.addButton({
id: 'custpage_button',
label: 'Run RESTlet',
functionName: "goToSuitelet('"+resURL+"')" //