1

実際のファイルが読み取れないことを除いて、すべてが機能しています。エラーが発生せず、添付ファイルが作成されるため、ロードされると思います。「ファイル」はsalesforceでbase64である必要があるため、ドライブのblobがbase64ではないことが問題であると想定しています。問題は、アップロードのためにファイルblobをbase64形式に変換するにはどうすればよいですか。これは実際に機能しますか。

関連するコードチャンク

    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());

ここでそれを見ると、Utilities.jsonStringify()ファイルが問題になります。ただし、これを機能させるにはまだいくつかの助けが必要です。

4

1 に答える 1

2

以下のコードスニペットは私のために機能します。サンプルに合わせて少し書き直しました。何を含めるべきかわからなかったので、所有者IDを含めませんでした。重要な問題は、を使用しなかったことかもしれないと思いますgetAs()。純粋なGoogleDocBLOBを取得した場合、ブラウザはそれを変換する方法を認識しません。私がapplication/pdfをどのように使用したかに注意してください。MSWordにも同様のMIMEタイプを使用できると思います。また、UtilitiesAPIを使用して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();  
于 2012-11-19T23:23:10.190 に答える