我看到Drive Folder
类具有一个createFile(),它使用three arguments for name, content, and mimeType。
convert=true
一起上传并转换用户文件(到Google Docs)?
例如,以下是HTML:
<html>
<head>
<base target="_top">
<script>
function handler(response) {
document.getElementById('uploader').innerHTML = "Uploaded file! " + response;
}
</script>
</head>
<body>
<div id="uploader">
<form>
<input type="file" name="theFile">
<input type="button" onclick="google.script.run.withSuccessHandler(handler).uploadFile(this.parentNode)" value="Upload!">
</form></div>
</body>
</html>
这是Google脚本代码:
function uploadFile(e) {
Logger.log("Uploading file!");
var dfolder = DriveApp.getFolderById('abcdefgh'); // replace w/ Drive FolderID
return dfolder.createFile(e.theFile).getName();
}
如何将最后一行更改为:
return dfolder.createFile(newName, e.theFile, MimeType.GOOGLE_SHEETS);
我现在想弄清楚的事情仅仅是如何获取要上传的文件的名称(例如,newName
)。然后如何将e.theFile
形式转换为字符串。如果现在按原样尝试,则会出现错误:
无效的参数:uploadFile处的file.contentType(代码:31)
答案 0 :(得分:2)
google.script.run
上传CSV和Excel文件。如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
我认为您需要在脚本中修改Google Apps脚本。
e.theFile
中uploadFile(e)
的值是blob。因此,您可以使用getName()
来检索文件名。Invalid argument: file.contentType at uploadFile
的原因是MimeType.GOOGLE_SHEETS
的mimeType不能与createFile()
一起使用。请如下修改uploadFile()
。使用此脚本之前,请在高级Google服务中启用Drive API,并将文件夹ID设置为folderId
。
function uploadFile(e) {
Logger.log("Uploading file!");
// I modified below script.
var folderId = "###"; // Please set the folder ID here.
var blob = e.theFile;
var filename = blob.getName();
var mimeType = blob.getContentType();
if (mimeType == MimeType.CSV || mimeType == MimeType.MICROSOFT_EXCEL || mimeType == MimeType.MICROSOFT_EXCEL_LEGACY) {
return Drive.Files.insert({title: filename, mimeType: MimeType.GOOGLE_SHEETS, parents: [{id: folderId}]}, blob).title;
}
return "";
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。