1

シンプルなスイートスクリプトプログラムに post メソッドを使用しようとしていますが、これは初めてです。

Netsuite では、次のようにスイートスクリプトを作成しました。

function restPost()
 {   
     var i = nlapiLoadRecord('department', 115); 

     var memo = nlapisetfieldvalue('custrecord225', ' ');// this is a customfield, which i want to populate the memo field, using rest client in firefox

     var recordId = nlapiSubmitRecord(i);

}

スクリプト レコードを作成し、この suitescript をアップロードし、外部 URL をコピーして restclient に貼り付けました。

外部 URL を貼り付けた Restclient(firefox プラグイン) で、メソッドを post として指定し、ヘッダーの承認を指定し、content-type: application/json を指定し、本文に入力しました{"memo":"mynamehere"};

これで私が得るエラーは

message": "引数リストの後に ) がありません

他のスイートスクリプトプログラムを書いて試してみましたが、エラーは次のとおりです。

オブジェクト リテラルの予期しないトークン (null$lib#3) 空の JSON 文字列 無効なデータ形式です。TEXT を返す必要があります。

私はプログラミングの世界にちょっと慣れていないので、どんな助けでも本当に良いでしょう.

4

4 に答える 4

1

私はあなたの要求を理解することができ、Parsun & NetSuite-Expert によって投稿された回答は良いものです. そのコードに従うことができます。これは、子レコードのないマスター レコードを受け入れることができる汎用コードです。たとえば、連絡先またはアドレス帳のない顧客。

コードに小さな変更を加えることを提案したいと思います。ソリューションでそれを示しました。

以下の変更点

var isExistRec = isExistingRecord(objDataIn);
            var record = (isExistRec) ? nlapiLoadRecord(objDataIn.recordtype, objDataIn.internalid, {
                recordmode: 'dynamic'
            }) : nlapiCreateRecord(objDataIn.recordtype);

//レコードが Netsuite に存在するかどうか、またはカスタム関数を使用してチェックします

function isExistingRecord(objDataIn) {
        if (objDataIn.internalid != null && objDataIn.internalid != '' && objDataIn.internalid.trim().length > 0)
            return true;
        else
            return false;
    }    

そのため、JSON データを RESTlet に渡すときは常に、internalid、recordtype を必須値として渡す必要があることに注意してください。

ありがとう
フレデリック

于 2016-02-25T10:18:37.477 に答える
1

POST メソッド用の RESTlet を作成しようとしていると思います。以下は、POST メソッドのサンプル コードです。

function createRecord(datain)
{
var err = new Object();

// Validate if mandatory record type is set in the request
if (!datain.recordtype)
{
    err.status = "failed";
    err.message= "missing recordtype";
    return err;
}

var record = nlapiCreateRecord(datain.recordtype);

for (var fieldname in datain)
{
 if (datain.hasOwnProperty(fieldname))
 {
     if (fieldname != 'recordtype' && fieldname != 'id')
     {
         var value = datain[fieldname];
         if (value && typeof value != 'object') // ignore other type of parameters
         {
             record.setFieldValue(fieldname, value);
         }
     }
 }
}
var recordId = nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG','id='+recordId);

var nlobj = nlapiLoadRecord(datain.recordtype,recordId);
return nlobj;
}

したがって、この RESTlet をデプロイした後、次のサンプル JSON ペイロードを渡すことで、この POST メソッドを呼び出すことができます -

{"recordtype":"customer","entityid":"John Doe","companyname":"ABCTools Inc","subsidiary":"1","email":"jdoe@email.com"}

承認のために、次のようにリクエストヘッダーを渡す必要があります-

var headers = {
           "Authorization": "NLAuth nlauth_account=" + cred.account + ", nlauth_email=" + cred.email + 
                            ", nlauth_signature= " + cred.password + ", nlauth_role=" + cred.role,
           "Content-Type": "application/json"};
于 2016-02-25T01:50:55.367 に答える
0

私はあなたがreturnあなたの機能から何かをしたいと思うと信じています。空のオブジェクト、または のようなもので問題ありません{success : true}

于 2016-02-25T01:46:17.830 に答える