ディスカッション
AIを用いた自動化で請求書処理を合理化
AIを用いた考察を使用して、計画と予測を迅速化
SuiteWorldまであと41日となりました。以下の最新情報をご確認ください。
アジェンダビルダー公開
SuiteWorld On Airの登録受付開始
新しいNetSuite Prompt Studioコンテスト
その他の最新情報も!
詳細はこのスレッドでご確認ください!
オンラインフォームで作成した重複のリードレコードをマージする
適用
製品: NetSuite 2022.1
シナリオ
オンラインフォームから新しいリードを作成する際、会社名とEメールに重複検出の設定がされています。 個人として販売されているリードを新規に作成した場合、すでに会社としてレコードが存在するため、重複したままになっています。 オンラインでは、このようなケースを想定しています。重複している場合、最も古いレコードを更新します。
解決策
オンラインフォームの重複検出のルールは、フォーム上で直接実行されます。しかし、リードフォームにスクリプトを配置した場合、次のようにデータを結合することになります。 nlapiSetFieldValue('companyname', firstname+lastname); のようなスクリプトが配置されている場合、送信前に オンラインフォームが送信された後、重複検出がこれを検出し、古いレコードを更新する代わりに新しいリードが作成されます。 これを解決するには、次のスクリプトが重複を分析した場合に実行されるスケジュールスクリプトが必要です。
// スクリプトSuiteScript 1.0 function beforeSubmit() { var searchResults = search.create({ search: record.Type.LEAD, filters: [ ["email", "is", record.GetValue('email')] ["companyname", "is", record.GetValue('companyname')] ], columns: [ search.createColumn({ name: "id", label: "ID" }), ] }); if (searchResults.lenght > 1) { nlapiScheduleScript(SCRIPT, DEPLOYMENT, originalLeadId); } }
// スクリプトSuiteScript 2.0 // N/task Module + N/search Module function beforeSubmit() { var searchResults = search.create({ search: record.Type.LEAD, filters: [ ["email", "is", record.GetValue('email')] ["companyname", "is", record.GetValue('companyname')] ], columns: [ search.createColumn({ name: "id", label: "ID" }), ] }); var searchResults = mySearch.run(); if (searchResults.lenght > 1) { var mrTask = task.create({ taskType: task.TaskType.SCHEDULED_SCRIPT, scriptId: SCRIPT, deploymentId: DEPLOYMENT, params: { originalLeadId } }); } }新しいリードの目的は、古いレコードの必要なフィールドをすべて更新し、新しいリードを削除することです。
免責事項
ここに記載されているサンプルコードは、法律で認められている最大限の範囲で、いかなる種類の保証もなく、「現状のまま」で提供されています。Oracle+NetSuite社は、開発者がそれぞれの開発プラットフォームにサンプルコードを実装したり、独自の Web サーバー構成を使用したりする際に、個々の成功を保証するものではありません。