2

NetSuite で電子メール機能を実行するために 2 つのスクリプトを使用しています。ボタンを作成するユーザー イベント スクリプトと、必要なすべての変数を取得し、営業チームのサブリストにある値に基づいて電子メールを実行するクライアント スクリプトがあります。ここに私の問題があります:スクリプトをテストするとき、私は管理者の役割でテストしていたので、すべてうまくいきました(私が知っている初歩的な間違いです)。管理者以外の役割がボタンのクリックによってスクリプトを実行しようとすると、役割の権限の問題が原因で nlObjError がスローされます (電子メール アドレスが保存されている従業員データを取得できません)。UE スクリプト (管理者として実行可能) で必要なすべての変数を取得し、それらをクライアント スクリプトに渡すことは可能ですか?

UE スクリプト:

function userEventCreateButton(type, form, request){

if (type != 'edit'){
        return;
    }
form.addButton('custpage_RequestSOW', "Request SOW", 'cs_RequestEmail()');
form.setScript('customscript224');  

クライアント スクリプト:

...for (var y = 1; y <= nlapiGetLineItemCount('salesteam'); y++) {
        var z = nlapiGetLineItemValue('salesteam', 'salesrole', y);
        nlapiLogExecution('DEBUG', 'sales role', z);
        var user = nlapiGetUser();
        **var username = nlapiLoadRecord('employee', user);**
        var firstname = username.getFieldValue('firstname');
        var lastname = username.getFieldValue('lastname');
        var opptitle = nlapiGetFieldValue('title');
        var customer = nlapiGetFieldValue('customer');
        nlapiLogExecution('debug', 'user', user);
        if (z != 5){}
        else if (z == 5){
            var employee_name = nlapiGetLineItemValue('salesteam', 'employee', y);
            console.log(employee_name);
            **var engrecord = nlapiLoadRecord('employee', employee_name);**
            console.log(engrecord);
            var engemail = engrecord.getFieldValue('email');
            console.log(engemail);
            nlapiSendEmail(user...
4

2 に答える 2

5

別のオプションは、従業員の電子メールをスクリプトの非表示フィールドに追加して、 before load user event管理者として実行するように展開し、クライアント スクリプトで電子メールを読み取ることができることです。

//in a variable make a JSON of employee Ids to Emails
newForm.addField('custpage_emails', 'longtext','Email').setDisplayType(hidden).setValue(JSON.stringify(employeeIdEmails));

クライアントスクリプトでは、次を使用してデータを取得できるようになりました

var emploeeIdToEmails = JSON.parse(nlapiGetFieldValue('custpage_emails'));
于 2015-11-22T05:13:58.140 に答える
3

私がすることは、クライアント側のスクリプトでフォームレス Suitelet を呼び出すことです。suitelet は、電子メールを生成して送信するものになります。Suitelet の展開を Execute As = Administrator に設定すると、権限の問題が解決するはずです。

もう 1 つの解決策は、Before Load スクリプトでデータを取得し、それを JSON オブジェクトに入れて、レコードのカスタム フィールドに保存することです。

于 2015-11-21T23:37:06.820 に答える