我正在尝试设置一个表单,将文件上传到我的google驱动器的特定目录,而不是主目录。
我找到了一个可以上传文件的脚本,但是它可以工作,不过我希望它会进入另一个文件夹。
目前文件将进入" /" 我如何将文件转到" / new / property / uploads /"?
Google Script:
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html');
}
function uploadFiles(form) {
try {
var dropbox = "Uploads";
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
var blob = form.myFile;
var file = folder.createFile(blob);
file.setDescription("Uploaded by " + form.myName);
return "File uploaded successfully " + file.getUrl();
} catch (error) {
return error.toString();
}
}
表单脚本:
<form id="myForm">
<input type="text" name="myName" placeholder="Your name..">
<input type="file" name="myFile">
<input type="submit" value="Upload File"
onclick="this.value='Uploading..';
google.script.run.withSuccessHandler(fileUploaded)
.uploadFiles(this.parentNode);
return false;">
</form>
<div id="output"></div>
<script>
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>
感谢您的帮助。
答案 0 :(得分:1)
通过driveApp获取文件夹并将其保存在那里,非常简单。
folder = DriveApp.getFolderById(ID)
在这种情况下检查文件夹是没有意义的。
答案 1 :(得分:0)
如果您想要的文件夹不存在,并且您想要创建新的子文件夹树,则需要在该文件夹中创建一个新文件夹。文件夹类具有createFolder()
方法。 DriveApp类还有createFolder()
方法,但是会将新文件夹放入主驱动器根目录中。因此,DriveApp和Folder都有createFolder()
方法。关键是首先获得对要使用createFolder()
的文件夹的引用,以创建一个新文件夹作为子文件夹。
function uploadFiles(form) {
try {
var dropbox = "Uploads";
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
var firstLevelFolder = DriveApp.createFolder("new");
var secondLevelFolder = firstLevelFolder.createFolder("property");
var folder = secondLevelFolder.createFolder(dropbox);
}
var blob = form.myFile;
var file = folder.createFile(blob);
file.setDescription("Uploaded by " + form.myName);
return "File uploaded successfully " + file.getUrl();
} catch (error) {
Logger.log('err: ' + error.toString());
return error.toString();
}
}