除了实际文件不可读之外我一切正常。我认为它加载,因为我没有得到任何错误,并创建附件。 “文件”需要在salesforce中为base64,所以我假设我的问题是Drive中的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()文件将是一个问题。尽管如此,仍需要一些帮助。
答案 0 :(得分:2)
下面的代码段对我有用。我重新写了一下以适应我的样本。我没有包括一个所有者,因为我不知道该包含什么。我认为关键问题可能是您没有使用getAs()
。如果你有纯Google Docb blob,那么你的浏览器将不知道如何转换它。请注意,我是如何使用application / pdf的。我相信你也可以为MS Word使用类似的MIME类型。另请注意,我使用Utilities 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();