2016-08-31 3 views
1

안녕하세요 저는 http를 통해 데이터를 전송하기 위해 외부 장치와 상호 작용해야합니다. SuiteScript 1에는 제한 사항이 있지만 SuiteScript 2는 무엇이 있습니까? 페이로드로 HTTP 요청을 만들고 2.0에서 다시 도움을 청할 수있는 방법이 있습니까?SuiteScript 2 콜백이 포함 된 Http 요청

답변

2

내가 세일즈 포스에 넷 스위트 항목을 전송하는 데 사용하는, 내가 가진 아주 기본적인 일 (마이너스 페이로드에서 추가 필드의 많은)이며, 그런 다음 응답에서 Salesforce ID로 NetSuite 항목을 업데이트하십시오. 이게 너가 찾고있는거야?

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

사과 드리겠습니다. 당장이 질문을 던져야하는데,이 서버 또는 클라이언트 쪽입니까? Becuase 나는 예약 된 스크립트에서이 스크립트를 정기적으로 실행해야합니다. 덕분에 – jk121960

+0

그 코드는 서버 측입니다. 나는 User Event 스크립트에서 실행되는 것을 가지고있다. 동일한 기본 기능을 예약 된 스크립트에 사용할 수 있습니다. 호출을 반복하거나 데이터 배열을 작성하여 보냅니다. 그런 다음 결과를 반복하십시오. – 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 
    }); 
})