2016-08-31 20 views
1

こんにちは、httpでデータを転送するために外部デバイスと対話する必要があります。私はSuiteScript 1に制限があることを知っていますが、SuiteScript 2はどうですか?ペイロードでHTTPリクエストを作成して2.0でコールバックする方法はありますか?SuiteScript 2コールバックのHttpリクエスト

答えて

2

は、私がSalesforceへNetSuiteのアイテムを送信するために使用することを、私はかなり基本的なもの(マイナスペイロード内の余分なフィールドのロット)で、 NetSuite項目をSalesforce IDで更新して、応答から削除します。これはあなたが探しているものですか?

define(['N/record','N/https'],function(record,https){ 
    function sendProductData(context){ 
    var prodNewRecord=context.newRecord; 
    var internalID=prodNewRecord.id; 
    var productCode=prodNewRecord.getValue('itemid'); 
    var postData={"internalID":internalID,"productCode":productCode}; 
    postData=JSON.stringify(postData); 
    var header=[]; 
    header['Content-Type']='application/json'; 
    var apiURL='https://OurAPIURL'; 
    try{ 
     var response=https.post({ 
     url:apiURL, 
     headers:header, 
     body:postData 
     }); 
     var newSFID=response.body; 
     newSFID=newSFID.replace('\n',''); 
    }catch(er02){ 
     log.error('ERROR',JSON.stringify(er02)); 
    } 

    if(newSFID!=''){ 
     try{ 
     var prodRec=record.submitFields({ 
      type:recordType, 
      id:internalID, 
      values:{'custitem_sf_id':newSFID,'externalid':newSFID}, 
     }); 
     }catch(er03){ 
     log.error('ERROR[er03]',JSON.stringify(er03)); 
     } 
    } 
    } 

    return{ 
    afterSubmit:sendProductData 
    } 
}); 

注:@erictgrubaughが述べているように、よりスケーラブルな解決方法があります。これは私たちのために働く簡単な例の単なる例です。

+1

ありがとう非常に正確に私が必要なもの – jk121960

+0

私はこれをすぐに尋ねてきたはずですが、このサーバーまたはクライアント側ですか?私はスケジュールされたスクリプトからこのスクリプトを定期的に実行しなければならないでしょう。 – jk121960

+0

そのコードはサーバー側です。私はそれをユーザーイベントスクリプトで実行しています。スケジュールされたスクリプトにも同じ基本機能を使用できます。呼び出しをループしたり、データの配列を作成して送信したりするだけです。その後、結果をループします。 – W3BGUY

2

N/httpまたはN/httpsモジュールを参照してください。それぞれは典型的なHTTPリクエストタイプのメソッドを提供し、各リクエストタイプはコールバック実装の約束を返すAPIを持っています。 NSのヘルプから

非常に簡単な例:ここでは

http.get.promise({ 
    url: 'http://www.google.com' 
}) 
.then(function(response){ 
    log.debug({ 
     title: 'Response', 
     details: response 
    }); 
}) 
.catch(function onRejected(reason) { 
    log.debug({ 
     title: 'Invalid Get Request: ', 
     details: reason 
    }); 
}) 
関連する問題