我看到 Drive Folder
类有一个 createFile() ,它需要 three arguments for name, content, and mimeType 。是否可以将此用作上传调用的一部分,以便一次性上传并转换用户文件(到 Google 文档),而无需 call the REST API directly与convert=true
?
例如,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
的任何形式转换为字符串。如果我现在按原样尝试,则会收到错误:
Invalid argument: file.contentType at uploadFile(Code:31)
最佳答案
- 您想要使用
google.script.run
上传 CSV 和 Excel 文件。 - 文件上传后,您希望将其转换为 Google 电子表格。
- 您想要检索已上传文件的文件名。
如果我的理解是正确的,那么这个修改怎么样?请将此视为多个答案之一。
我认为在您的脚本中,需要修改 Google Apps 脚本。
修改点:
uploadFile(e)
的e.theFile
的值是 blob。因此,您可以使用getName()
检索文件名。- 您可以使用 Drive API 将 CSV 和 Excel 格式转换为 Google 电子表格。在本例中,我在高级 Google 服务中使用了 Drive API v2。
- 出现
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 "";
}
引用文献:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
关于google-apps-script - 通过 Google App 脚本将 CSV/Excel 文件上传为工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942273/