在 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 驱动器:

  1. 在 Google 驱动器存储库中手动创建(或打开)所需的文件夹。
  2. 找到你文件夹的ID(当你打开文件夹时,你可以在URL末尾找到id:drive.google.com/drive/folders/{this is your ID}

脚本:

  1. 获取所需的目标文件夹var parentFolder = DriveApp.getFolderById("{put your folder id here}");
  2. 添加您的代码
  3. 当您在父文件夹中创建新文件夹时,只需调用您之前创建的 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!";
          }