File 谷歌应用程序脚本提供的BOX API-新文件版本上传
我已经问过燃气界,但有人建议我继续在这里问。。。 到目前为止,我可以连接到BOX并获得文件列表,还可以从BOX下载文件。 整个想法是使用BOX API下载一个文件,对其进行编辑,然后使用BOX API将其作为新的文件版本上传回来。 我无法使最后一部分工作,因为它给我错误代码400。 下面是函数File 谷歌应用程序脚本提供的BOX API-新文件版本上传,file,google-apps-script,version,box-api,File,Google Apps Script,Version,Box Api,我已经问过燃气界,但有人建议我继续在这里问。。。 到目前为止,我可以连接到BOX并获得文件列表,还可以从BOX下载文件。 整个想法是使用BOX API下载一个文件,对其进行编辑,然后使用BOX API将其作为新的文件版本上传回来。 我无法使最后一部分工作,因为它给我错误代码400。 下面是函数 函数uploadNewFileVersion(){ //767694355309测试 var-boxFileId=“767694355309”; var newVerFile=DriveApp.getF
函数uploadNewFileVersion(){
//767694355309测试
var-boxFileId=“767694355309”;
var newVerFile=DriveApp.getFileById(“1sK-jcaJoD0WaAcixKtlHA85pf6t8M61v”).getBlob();
var confirAuthorization=getBoxService_uxService().getAccessToken();
//var parent={“id”:“0”};
//“名称”:“apiNewVersion.xlsx”,
//“家长”:家长,
var有效载荷={
“文件”:newVerFile
}
变量头={
“授权”:“持有人”+确认授权
}
变量选项={
“方法”:“发布”,
“muteHttpExceptions”:true,
“contentType”:“多部分/表单数据”,
“标题”:标题,
“有效载荷”:有效载荷
}
var apichtml=”https://upload.box.com/api/2.0/files/“+boxFileId+”/content/”;
var response=UrlFetchApp.fetch(apiHtml,选项);
Logger.log(response.getResponseCode());
var a=1;
}
我相信你的目标和情况如下
- 您想使用带有Google应用程序脚本的Box API上传Google Drive文件
- 从您的问题中,我找不到您想要使用的API方法的官方文档。但是,从端点
在您的脚本中,我猜您想使用https://upload.box.com/api/2.0/files/“+boxFileId+”/content/
- 访问令牌和文件ID的值对于使用API是有效的
- 当我看到的官方文件时,我确认了以下示例。在本例中,我们认为当下面的curl命令转换为GoogleApps脚本时,请求可能会起作用
$ curl -i -X POST "https://upload.box.com/api/2.0/files/12345/content" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: multipart/form-data" \ -F attributes="{"name":"Contract.pdf", "parent":{"id":"11446498"}}" \ -F file=@<FILE_NAME>
- 我可以确认上面的示例脚本与上面的示例curl是相同的请求
- 如果您不想使用文件元数据,请从
中删除有效负载
行属性:JSON.stringify(元数据)
- 在这种情况下,UrlFetchApp的最大数据大小(“URL Fetch POST大小”)为50 MB。请小心这个李>
- 关于Box API文件上传的限制,请查看
- 如果您的访问令牌和文件ID无效,我认为会发生错误。所以请小心这个
function myFunction() { const accessToken = "###"; // Please set your access token. const fileId = "###"; // Please set your fileId. const fileBlob = DriveApp.getFileById("1sK-jcaJoD0WaAcixKtlHA85pf6t8M61v").getBlob(); const metadata = {name: "Contract.pdf", parent: {id: "11446498"}}; // Please set your file metadata. const params = { method: "post", headers: {Authorization: `Bearer ${accessToken}`}, payload: { attributes: JSON.stringify(metadata), file: fileBlob, }, muteHttpExceptions: true, }; const url = `https://upload.box.com/api/2.0/files/${fileId}/content`; const res = UrlFetchApp.fetch(url, params); console.log(res.getContentText()); }