我有一个通过Google Apps Scripts发布的简单表单,允许某人匿名上传文件。该脚本运行良好,但它将始终保存到我的Google云端硬盘的根目录,而不是特定的文件夹。我希望在特定文件夹中创建一个包含该人的名字+姓氏(从表单中收集)的新文件夹。我知道我需要使用目标FolderID,只是不确定如何正确使用它。
这是我现有的代码:
function uploadFiles(form) {
try {
var dropbox = form.FirstName + form.LastName;
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.Name);
return "Thank you, your file was uploaded successfully!";
答案 0 :(得分:1)
我不确定我是否理解你的目标是什么。但是,如果要在某个特定文件夹中创建文件夹“FirstnameLastname”,则应首先选择此“父”文件夹,然后将其用于创建新文件夹。
修改强>
首先看一下Google的参考资料。您使用类DriveApp
和方法.createFolder()
。 Google cheat sheet说,DriveApp类中的此方法'使用给定名称在用户的驱动器的根目录中创建一个文件夹。'。此方法返回folder
作为返回类型(您的变量类型将是文件夹)。
这就是您的代码仅在根文件夹中创建文件夹的原因。
再次查看cheatsheet,但现在查看folder
课程。您可以在此类中使用相同的方法.createFolder()
。结果如下:'在当前文件夹中创建具有给定名称的文件夹。'此方法再次返回folder
。
Google云端硬盘:
drive.google.com/drive/folders/{this is your ID}
)<强>脚本:强>
var parentFolder = DriveApp.getFolderById("{put your folder id here}");
.createFolder()
中调用parentFolder
方法:var folder = parentFolder.createFolder();
function uploadFiles(form) {
try {
var dropbox = form.FirstName + form.LastName;
var parentFolder = DriveApp.getFolderById('parentfolderId'); //add this line...
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = parentFolder.createFolder(dropbox); //edit this line
}
var blob = form.myFile;
var file = folder.createFile(blob);
file.setDescription("Uploaded by " + form.Name);
return "Thank you, your file was uploaded successfully!";
}