2012-11-19 3 views
0

실제 파일을 읽을 수 없다는 점을 제외하고는 모든 것이 작동합니다. 오류가 발생하지 않고 첨부 파일이 만들어 지므로로드가 있다고 가정합니다. "파일"은 salesforce에서 base64 여야하므로 내 문제는 드라이브의 BLOB가 base64가 아니라는 가정하에 가정합니다. 질문은 파일 blob을 업로드 용 base64 형식으로 변환하는 방법이며 이것이 실제로 작동하는지 여부입니다. 그것은 Utilities.jsonStringify 솔기 여기에서 찾고Google 드라이브 파일을 Salesforce 첨부 파일로 업로드

관련 코드 청크

var payload = Utilities.jsonStringify(
     {"Name" : name, //string 
     "ParentId" : acctId, //string 
     "OwnerId" : ownerId, //string 
     "body" : content //base64 
     } 
    ); 

    var contentType = "application/json; charset=utf-8"; 
    var feedUrl = instanceUrl + "/services/data/v23.0/sobjects/Attachment/" 
    var response = UrlFetchApp.fetch(feedUrl, { method : "POST", headers : { "Authorization" : "OAuth " + accessToken }, payload : payload, contentType: contentType }); 

    var feed = JSON.parse(response.getContentText()); 

()이 파일은 문제가 될 것입니다. 그래도이 작업을하는 데 도움이 필요합니다.

답변

2

아래 코드 스 니펫이 저에게 효과적입니다. 샘플을 맞추기 위해 다시 작성했습니다. 내가 거기에 무엇을 포함해야할지 몰랐기 때문에 나는 소유주를 포함시키지 않았다. 중요한 문제는 getAs()을 사용하지 않았다는 것입니다. 순수한 Google 문서 BLOB가 있으면 브라우저가 변환 방법을 알 수 없습니다. 통지, 어떻게 응용 프로그램/pdf를 사용. 나는 MS Word와 비슷한 MIME 형식을 사용할 수 있다고 생각한다. 또한 유틸리티 API를 사용하여 Base64로 변환했습니다.

var myFileId = 'MY_FILE_ID'; 
var myParendId = 'ACCOUNT_ID'; 
var myToken = 'USER_TOKEN'; 

var baseContent = DocsList.getFileById(myFileId).getAs('application/pdf').getBytes(); 
var base64Content = Utilities.base64Encode(baseContent); 

var payload = Utilities.jsonStringify(
    {"Name" : 'ArunTest.pdf', //string 
    "ParentId" : myParendId, //string 
    "body" : base64Content //base64 
    } 
); 

var options = { 
     "method": "post", 
     "contentType" : "application/json", 
     "payload" : payload, 
     "headers" : { 
        "Authorization" : "Bearer " + myToken 
        } 
} 

var getDataURL = UserProperties.getProperty(baseURLPropertyName) + '/services/data/v26.0/sobjects/Attachment/'; 
var dataResponse = UrlFetchApp.fetch(getDataURL,options).getContentText(); 
+0

내가 필요한 것. 나는 시작점이 물방울을 위해 무엇인지 또는 그 정의 방법을 알지 못했습니다. getAs는 분명히 그 문제를 해결합니다. Salesforce는 첨부 레코드를 만들 때 소유자 ID가 필요합니다. 우리에게는 쉽습니다. Google 사용자는 salesforce 사용자이므로 전자 메일 주소를 통해 찾을 수 있습니다. 다른 사람들은 그런 선택권이 없을 수도 있습니다. –

+0

좋아요. 이것이 다음 사람에게 중요한 대답으로 나타날 수 있도록 허용 된 것으로 표시하십시오. OwnerId없이 작업 할 수있었습니다 (아마도 업로드하는 사람이 소유자 인 것으로 가정 할 수 있습니다). 어느 쪽이든, 나는 그것이 당신을 위해 잘 된 것을 기쁘게 생각합니다. –

관련 문제