在 Google 脚本中指定要保存文件的文件夹
Specify folder to save files to in Google Script
我有一个通过 Google Apps Scripts 发布的简单表单,允许某人匿名上传文件。该脚本运行良好,但它总是会保存到我的 Google 驱动器的根目录,而不是特定文件夹。我希望它在特定文件夹中创建一个包含此人的名字 + 姓氏(从表单中收集)的新文件夹。我知道我需要使用目标文件夹 ID,只是不确定如何正确使用它。
这是我现有的代码:
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!";
我不确定我是否理解你的目标是什么。但是如果你想在某个特定的文件夹中创建文件夹 'FirstnameLastname',你应该首先 select 这个 'parent' 文件夹,然后用它来创建新的文件夹。
编辑:
总结
首先看一下来自Google的参考。您使用 class DriveApp
和方法 .createFolder()
。 Google cheat sheet 说,DriveApp 中的这个方法 class '用给定的名称在用户的 Drive 根目录中创建一个文件夹。'。此方法 returns folder
为 return 类型(您的变量类型将是文件夹)。
这就是您的代码仅在根文件夹中创建文件夹的原因。
再次查看 cheatsheet,但现在查看 folder
class。您可以使用与此 class 相同的方法 .createFolder()
。结果如下:'Creates a folder in the current folder with the given name.' 这个方法再次 returns folder
。
解决方案
Google 驱动器:
- 在 Google 驱动器存储库中手动创建(或打开)所需的文件夹。
- 找到你文件夹的ID(当你打开文件夹时,你可以在URL末尾找到id:
drive.google.com/drive/folders/{this is your ID}
)
脚本:
- 获取所需的目标文件夹
var parentFolder = DriveApp.getFolderById("{put your folder id here}");
- 添加您的代码
- 当您在父文件夹中创建新文件夹时,只需调用您之前创建的
parentFolder
中的 .createFolder()
方法: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!";
}
我有一个通过 Google Apps Scripts 发布的简单表单,允许某人匿名上传文件。该脚本运行良好,但它总是会保存到我的 Google 驱动器的根目录,而不是特定文件夹。我希望它在特定文件夹中创建一个包含此人的名字 + 姓氏(从表单中收集)的新文件夹。我知道我需要使用目标文件夹 ID,只是不确定如何正确使用它。
这是我现有的代码:
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!";
我不确定我是否理解你的目标是什么。但是如果你想在某个特定的文件夹中创建文件夹 'FirstnameLastname',你应该首先 select 这个 'parent' 文件夹,然后用它来创建新的文件夹。
编辑:
总结
首先看一下来自Google的参考。您使用 class DriveApp
和方法 .createFolder()
。 Google cheat sheet 说,DriveApp 中的这个方法 class '用给定的名称在用户的 Drive 根目录中创建一个文件夹。'。此方法 returns folder
为 return 类型(您的变量类型将是文件夹)。
这就是您的代码仅在根文件夹中创建文件夹的原因。
再次查看 cheatsheet,但现在查看 folder
class。您可以使用与此 class 相同的方法 .createFolder()
。结果如下:'Creates a folder in the current folder with the given name.' 这个方法再次 returns folder
。
解决方案
Google 驱动器:
- 在 Google 驱动器存储库中手动创建(或打开)所需的文件夹。
- 找到你文件夹的ID(当你打开文件夹时,你可以在URL末尾找到id:
drive.google.com/drive/folders/{this is your ID}
)
脚本:
- 获取所需的目标文件夹
var parentFolder = DriveApp.getFolderById("{put your folder id here}");
- 添加您的代码
- 当您在父文件夹中创建新文件夹时,只需调用您之前创建的
parentFolder
中的.createFolder()
方法: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!";
}