-
SuiteScriptを使用して結果が1000件を超える検索からすべてのデータを取得する
適用 製品: NetSuite 2024.2 シナリオ RESTletを使用して結果が1000件を超える保存検索を実行したい。ただし、スクリプトで実行した場合、検索は1000件の結果しか返しません。 解決策 取得されたデータが検索の合計結果と等しくなるまで、do whileループ内でgetRangeメソッドを使用することがカギとなります。 /** * @NApiVersion 2.x * @NScriptType Restlet * @NModuleScope SameAccount */ define(['N/record', 'N/error', 'N/search'], function(record, error, search)…
-
Webサービスを使用して顧客レコードの住所サブレコードからカスタムフィールド値を取得する
適用 製品: NetSuite 2023.1 シナリオ Webサービスを使用して顧客レコードの中の住所サブレコードのカスタムフィールドの値を取得したい。 解決策 住所サブレコードのカスタムフィールドの値を取得するためにはWebサービスのGETオペレーションを使用します。 SOAPリクエスト例: <soapenv:Envelope> <soapenv:Body> <get xsi:type='platformMsgs:GetRequest'> <baseRef xsi:type='platformCore:RecordRef' internalId='13' type='customer'/> get> soapenv:Body>…
-
Scriptでアイテムレコードの価格マトリックスを変更する
適用 製品: NetSuite 2022.1 シナリオ nlapiLoadRecordかつnlapiSubmitRecordを介して、クライントスクリプトで在庫アイテムの価格・数量マトリックスは変更できません。 しかし、サーバーサイードスクリプトで可能です。バックエンドSuiteletで価格・数量マトリックスを設定するボタンをユーザーイベントスクリプトで追加します。ロジックはクライントスクリプトの代わり、バックエンドSuiteletに追加します。 解決策 サンプルコード ユーザーイベントスクリプト function userEventBeforeLoad(type, form, request) {…
-
マップ/レデューススクリプトで注文書のラインの一括更新の応答時間を向上する
適用 製品: NetSuite 2022.1 シナリオ マップ/レデューススクリプトで注文書のラインを一括更新する時に、応答が遅い事があります。 解決策 スクリプトデプロイメントページの同時使用制限の設定を増加する場合、応答時間は向上できます。例え、2つSuiteCloudプラスライセンスでマップ/レデューススクリプトで使用可能のプロセッサーは10つになります。SuiteAnswersのSuiteCloudプラス設定を参照してください。 補足情報とは、アプリケーションパフォーマンス管理 (ID: 67350) > スクリプトキューモニタ > キューの平均待ち時間とキューの平均使用時間の計算方法を参照してください。
-
SuiteScript 1.0を使用して動的なリストを持つカスタムフィールドを作成する
適用 製品: NetSuite 2022.1 シナリオ 仕入先支払請求書(支払請求書作成時に発注書から入力される)上でソースとなる選択フィールドがあり、それは承認時に従業員に請求書をルーティングするワークフローで使用されます。WV支払請求書所有者ロールを持つ従業員のみが、支払請求書を承認することができます。しかし、購入者は現在、このロールを持たない従業員を選択しているため、請求書は行き詰まり、承認されないまま終了しています。 解決策 ユーザーイベントスクリプトの作成 読み込み前関数の下に、以下の条件の検索を作成します。 注:これは、保存検索を作成することによっても可能です。 フィルター: ロール: 内部IDのいずれか WV…
-
スクリプト経由で複数選択フィールドから他の複数選択へ値を設定する
適用 製品: NetSuite 2025.1 シナリオ スクリプトを用いて複数選択フィールドから他の複数選択へ値を設定する。 解決策 以下はサンプルスクリプトです。 //SuiteScript 1.0 var src = nlapiLookupField('salesorder',123456,'custbody_field_A'); var outRec = nlapiLoadRecord('salesorder',654321); outRec.setFieldValues('custbody_field_B',src); nlapiSubmitRecord(outRec); // SuiteScript 2.0…
-
1つのオブジェクト内にHTMLとnlobjForm Suiteletを結合
適用 製品: NetSuite 2021.2 シナリオ HTMLとserverWidget.FormのオブジェクトをSuiteletで組み合せる方法のサンプルを尋ねている 解決策 /** * @NApiVersion 2.x * @NScriptType Suitelet * @NModuleScope SameAccount */ define(['N/ui/serverWidget'], function(widget) { function onRequest(context) { var myForm = widget.createForm({ title: 'Simple Form' }); var field1 =…
-
SuiteScript 2.0を用いて、顧客レコードのパートーナーサブリストフィールドを削除する
適用 製品: NetSuite 2023.1 シナリオ SuiteScript 2.0を用いて、顧客レコードのパートーナーサブリストフィールドを削除します。 使用するスクリプトは全てのラインフィールドをループし、全てのパートーナーサブリストフィールドを削除します。 解決策 以下の手順で削除できます。 スクリプトファイルを作成します。この特定の例では、ユーザーイベントのスクリプト種類が適切です。SuiteScript 2.0も使用します。 以下のサンプルコードを実装します。 var customerRecord = record.load({ type: record.Type.CUSTOMER, id: <populate id> });…
-
エンティティリストをSuiteletセレクトフィールドに動的に供給する
適用 製品: 2022.1 シナリオ ユーザーはSuiteletに別のフィールドからのエンティティリストを取得するセレクトフィールドを実装したい。このシナリオでは、リストはカレンダーイベントレコードから取得されています。 カレンダーイベントレコードから利用できるエンティティリストは、以下のレコードタイプになります: 顧客 パートナー プロジェクト ベンダー 制限:下記のSuiteAnswers記事により、getSelectOptions()関数は最初の1,000個のみを返します: SuiteScript 1.0の場合 - SuiteAnswers記事10263:nlobjField SuiteScript…
-
SuiteletのサブリストでUIオブジェクトフィールドに保存検索からの結合テーブルの値を添付する
適用 製品: NetSuite 2024.2 シナリオ SuiteletサブリストのUIオブジェクト・フィールドの保存検索から結合された表の値を添付したい 解決策 保存検索からSuitelet内に作成されるカスタム・サブリストの場合、sublist.setLineItemValues(searchResults)という1行のコードのみを使用して、すべての値を割り当てることができます。 これを使用すると、保存検索の結合列フィールドを使用するフィールドを除き、メイン・レコード内にあるすべてのフィールドに値が入力されます。 1. この例では、値は注文書の保存検索からのものです。 function CreateForm() { var form =…
-
カスタムフィールドの設定前に挿入がカスタムフォームで観察されない問題を解決する方法
適用 製品: NetSuite 2025.1 シナリオ カスタムトランザクションボディフィールドを作成し、「表示」サブタブで「前に挿入」を特定のフィールドに設定しました。 このフィールドを適切なトランザクションフォームに適用した後、新しく作成されたフィールドが、このカスタムフォームで 「前に挿入」として設定されたフィールドの前に配置されていないことに気付きました。 これは機能改善 50302 として提出されました。 注: 機能改善を検索して投票するには、 10054 Voting for Enhancement を参照してください。 解決策 カスタマイゼーション > フォーム > トランザクションフォーム 希望するトランザクションフォーム:…
-
承認ステータス・リスト内部ID
適用 製品: NetSuite 2025.1 シナリオ こちらの記事は、「リスト/レコード」型のカスタムトランザクションボディフィールドで「承認ステータス(Approval Status)」をリスト/レコードとして使用した場合に、各ステータスに紐づく内部IDを示しています。 解決策 以下は、UI上で表示されるテキスト値と対応する内部IDです: 内部ID ステータス(UI表示) 1 承認待ち(Pending Approval) 2 承認済み(Approved) 3 却下(Rejected)
-
バンドルインストール中または更新時に予期せぬエラーが発生する
適用 製品: NetSuite 2022.2 シナリオ バンドルインストールまたはアップデートに失敗し、予期しないエラーまたはチケット番号の失敗が発生する。 解決策 バンドルのインストール中または更新時にユーザーが予期しないエラーメッセージに遭遇した場合の考えられる解決策の1つは、先に進み、オフピーク時にバンドルを再度インストールまたは更新することです。 再試行後も予期しないエラーが発生する場合は、ケースを提出し、エラーチケット番号を提供してサポートにご連絡ください。
-
RESTletでクレジット・カード承認済のチェックバックスを設定
適用 製品: NetSuite 2022.1 シナリオ RESTletで注文書を作成する際、「クレジットカード承認」のチェックボックスがチェックされない。 解決策 これは、注文書で選択または入力されている通貨が、支払い処理プロファイルでサポートされていないために発生する可能性があります。支払いプロセスプロファイルが選択されていない場合、「クレジットカード承認」チェックボックスはチェックできません。選択されている通貨が支払処理プロファイルでサポートされていることを確認するには、以下の手順を実行してください。 * リスト > 会計 >…
-
SuiteScript 1.0でCSVインポート時のクレジットメモから顧客払戻へ変換するサンプルスクリプト
適用 製品: NetSuite 2025.1 シナリオ この記事では、SuiteScript 1.0を使用して、CSVインポートで作成されたクレジットメモを自動的にカスタマーリファンド(顧客への返金)に変換する方法について説明します。 ユーザーイベントスクリプト内では、**顧客ID(customer ID)・勘定科目ID(account ID)・支払方法ID(payment method ID)**の3つのパラメータが必須となるため、これらを必ず取得してください。これらが揃っていないと、カスタマーリファンドの作成はできません。 また、**「Run Server SuiteScript and Trigger…
-
テクサービスカスタマイゼーションのアドバンス承認バンドルに通過するカスタム自動生成番号をPDFトランザクションに表示する
適用 製品: NetSuite 2023.1 バンドル: Tech Service Customization - Advanced Approval Bundle シナリオ テクサービスカスタマイゼーションのアドバンス承認バンドルに通過するカスタム自動生成番号をPDFトランザクションに表示する 解決策 以下の手順に従って、テクサービスカスタマイゼーションのアドバンス承認バンドルに通過するカスタム自動生成番号をPDFトランザクションに表示できます。 1. カスタマイゼーション > スクリプト > スクリプト へ移動します 2. フィルター:ワークフローアクションを選択します 3. 「NSTS | GAW - Send Email…
-
SuiteScriptを用いて、請求書の作成時に利益認識終了日を更新する
適用 製品: NetSuite 2025.1 シナリオ 請求書の作成時に利益認識終了日または条件を更新します。 解決策 SuiteScript 1.0 function userEventAfterSubmit(type){ if (type == 'create') { var record = nlapiLoadRecord(nlapiGetRecordType(),nlapiGetRecordId(), {recordmode: 'dynamic'}); var count = record.getLineItemCount('item'); for(var x =1; x<=count; x++) { var…
-
注文書から請求書を作成する時のデフォルト値を設定する
適用 製品: NetSuite 2022.1 シナリオ 注文書から請求書を作成する際に、デフォルト日付と為替レートを設定したい。 解決策 * ユーザーイベントスクリプトを作成します。 * スクリプトのbeforeLoad機能で以下のコードを追加します。 SuiteScript 1.0 if (type == 'create' && nlapiGetFieldValue('createdfrom') == null) { nlapiSetFieldValue('trandate', nlapiLookupField('salesorder', nlapiGetFieldValue('createdfrom'), 'trandate'),…
-
インストール済みのバンドル所有者を変更することができない
適用 製品: NetSuite 2021.1 シナリオ 設計上、インストールされたバンドルの所有者を変更することはできません。この機能は、392782 機能改善を通じて将来のリリースで利用可能なサポート機能であることが現在要求されています。 注:機能改善の検索と投票については、392782 機能改善への投票を参照してください。 次の代替案では、バンドルと関連するスクリプト/ワークフローを介してエラーアラートが送信されるシナリオで、バンドル所有者を変更できます。 解決策 * リスト > 従業員 > 従業員に移動 * 任意の社員レコード:編集をクリックします。 * 名前:適切な名前を入力します。 * 保存をクリックします。…
-
SuiteScriptでサブリストフィールドを非表示にする
適用 製品: NetSuite 2021.1 シナリオ サブリストフィールドを表示したくない場合は、SuiteScript を使用して非表示にしたい。 解決策 SuiteScript を使用してサブリストフィールドを非表示にするには、次のユーザイベントスクリプトのロード前機能のを使用できます。SuiteScript 1.0:nlapiGetLineItemField('item','custcol30',1).setDisplayType('hidden'); //custcol30はカスタムトランザクションラインフィールドの内部IDSuiteScript 2.0:var objForm = scriptContext.form;…
-
チーム販売が有効の場合、SuiteScript経由で主営業担当者および貢献を上書きする
適用 製品: NetSuite 2023.1 シナリオ アカウントにチーム販売のプリファレンスを有効しました。その時、注文書のようのトランザクションにて、顧客は選択すると、営業チームのサブリストは自動的にに入力されます。そのため、レコードを送信後に既述サブリストを上書きしたいです。 解決策 1. 以下のサンプルコードを含むJavaScriptファイルを作成します。 function userEventBeforeSubmit(type) { nlapiSetLineItemValue('salesteam', 'employee', 1, 100); //サンプルの従業員の内部ID:100…
-
POSTMANにてOAuth 1.0でRESTletへログインする際に「Invalid Login Attempt」エラーが発生する
適用 製品: NetSuite 2024.1 シナリオ トークンベース認証(OAuth 1.0)を使用しているときにPostmanからRESTletスクリプトを呼び出すと、エラーメッセージ「Invalid Login Attempt」が表示されることがある。 解決策 NetSuiteがこのエラーメッセージを返すのは、以下の理由によります。 * Postmanのリクエストで、Authorizationタブに移動 * 以下のフィールドを注意して確認* Consumer Key * Consumer Secret * アクセストークン * トークンシークレット * Realm…
-
ワークフローで一部のメール送信タグが機能していない
適用 製品: NetSuite 2021.1 シナリオ ワークフローの電子メールを送信アクションのタグの一部が機能していない。 解決策 ワークフロー> 電子メールを送信> カスタムテンプレートを使用する場合、エディターでフォーマットが適用されていると、一部のNetSuiteタグが正しく機能しない場合があります。 リッチテキストエディタでメール本文を編集する場合は、ソース編集モードに切り替えて、タグの間にフォーマットが挿入されていないことを確認してください。 例: 正: {class.custrecord_class_externalid} 誤: {class. custrecord_class_externalid } 免責事項…
-
SuiteScript 1.0のSuiteletと保存検索でカスタム選択フィールドの選択肢をフィルターする
適用 製品: NetSuite 2023.1 シナリオ 保存検索結果を基づいて、Suiteletスクリプトのカスタム選択フィールドの値をフィルターします。 解決策 以下の例で、従業員の保存検索を基づいて、カスタムフィールドの値をフィルタリングします。特定な部門からの従業員を値にリストします。従業員の名前、従業員番号、内部IDは保存検索結果で表示します。 保存従業員検索を作成 リスト > 検索 > 保存検索 > 新規作成 へ移動 従業員を選択 検索タイトル:タイトルを記入(例:選択フィールドの部門毎により従業員リスト) 条件を押下 標準を押下 フィルター:(注:ドラップダウメニューで各必須のフィールドを記入して、追加を押下します。)…
-
ポートレットスクリプトを用いて顧客ダッシュボードから顧客の内部IDを取得する
適用 製品: NetSuite 2025.1 シナリオ NetSuiteには、システム内のすべての顧客(リードや見込み客を含む)に対して利用可能な専用ダッシュボードがあります。顧客ダッシュボードは、顧客のすべてのデータに一目でアクセスできるため、必要な情報を収集しまとめるために複数の画面を検索する必要がありません。 カスタム・ポートレットが顧客ダッシュボードに追加された場合、追加の引数として顧客の内部IDを渡すことができます。 entityid - 選択された顧客の顧客IDを参照します。 解決策…
-
トランザクション内でのアイテムのレコードタイプを動的に取得
適用 製品: NetSuite 2023.1 シナリオ アイテムサブリストのアイテムレコードを確認する必要がありますが、サブリスト内のアイテムで異なるレコードタイプが使用されている条件がある場合があります(例:在庫アイテム、非在庫アイテム)。 注:これは、後でトランザクションのアイテムが無効化された場合に使用できます。後でトランザクションを編集すると、エラーが発生する場合があります。 解決策 以下のサンプルスクリプトは保存時にトリガーされるクライアント側のスクリプトで、トランザクションが無効なアイテムを含むレコードを保存できないようにする。 * サンプルスクリプトを作成:* function mySaveRecord(){ for (var…
-
リッチテキストテキストエリアカスタムフィールドの長さを設定
適用 製品: NetSuite 2023.2 シナリオ リッチテキストとテキストエリアのカスタムフィールドに最大文字数を設定することは、現在制限されており、機能改善#66573で記録されています。代替策として、フィールドの優先文字数制限に達した場合にエラーを返すワークフローを使用してください。 解決策 * カスタマイゼーション > ワークフロー > ワークフロー > 新規作成に移動 * 基本情報で、* 名前: WF制限文字 * レコードの種類:トランザクション * サブタイプ:注文書 * 管理者として実行:ON * リリース・ステータス:リリース済 * 開始:イベント・ベース * イベント定義* 作成時:ON * ビューまたは更新時:ON…
-
当月分をWordで取得するカスタムフィールドを作成する方法
適用 製品: NetSuite 2022.2 シナリオ 当月分を単語で格納するカスタムフィールドを作成します。 解決策 * カスタマイゼーション > リスト、レコード、およびフィールド > トランザクションボディフィールド > 新規作成* ラベル:月 * 種類:自由形式のテキスト * 値を保存:OFF * 次に適用タブをクリック* フィールドを適用する場所を確認 例:販売 * 検証とデフォルト設定タブをクリック* デフォルト値:TO_CHAR(sysdate、'Month') * 計算式:ON * 保存をクリック
-
SuiteScript 2.0でマップ/レデュースタスクを送信する時に「NO_DEPLOYMENT_AVAILABLE」のエラーが出ます
適用 製品: NetSuite 2022.1 シナリオ マップ/レデューススクリプトを実行する時、「NO_DEPLOYMENT_AVAILABLE」のエラーが出ます。進行中のキューに、マップ/レデュースのデプロイメントのインスタンスを新しくリクエストする際に、そのエラーは出ます。スクリプトのエラーを回避するため、SuiteScript 2.0で以下の2つオプションがあります。 解決策 オプション①:キューにタスクを送信する前、同様なスクリプトデプロイメントの内部IDの進行中タスクがあるかどうかチェックする保存検索がある定期スクリプトを実施します。 * 手順1:UIで保存検索を作成します* レポート > 保存検索 > 全ての保存検索 >…
-
SuiteScriptでエラー処理のTry-Throw-Catchでカスタムエラーメッセージは表示しない
適用 製品: NetSuite 2022.1 シナリオ エラーは発生したが、カスタムエラーのメッセージが表示されません。スクリプトのtry、throw、catchの中にカスタムエラーのコードは書き込みました。 解決策 * エラーの再現方法を定義します。(例:顧客レコードの名前を変更して保存すると、エラーメッセージは表示していません。)このようにすると、tryの実行は確保できます。 * スクリプトのtryのカスタムエラーの中にthrowのステートメントがあるかどうか確認します。throwステートメントが無い場合、catchの実行はtryからトリガーできません。 * カスタムエラーの条件はすべて満たせるかどうかデバグで確認します。