指定要在Google Script中保存文件的文件夹

时间:2018-03-26 22:13:00

标签: google-apps-script

我有一个通过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!";

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的目标是什么。但是,如果要在某个特定文件夹中创建文件夹“FirstnameLastname”,则应首先选择此“父”文件夹,然后将其用于创建新文件夹。

修改

摘要

首先看一下Google的参考资料。您使用类DriveApp和方法.createFolder()Google cheat sheet说,DriveApp类中的此方法'使用给定名称在用户的驱动器的根目录中创建一个文件夹。'。此方法返回folder作为返回类型(您的变量类型将是文件夹)。

这就是您的代码仅在根文件夹中创建文件夹的原因。

再次查看cheatsheet,但现在查看folder课程。您可以在此类中使用相同的方法.createFolder()。结果如下:'在当前文件夹中创建具有给定名称的文件夹。'此方法再次返回folder

解决方案

Google云端硬盘:

  1. 在Google云端硬盘资源库中手动创建(或打开)所需的文件夹。
  2. 找到您文件夹的ID(当您打开文件夹时,您可以在网址末尾找到ID:drive.google.com/drive/folders/{this is your ID}
  3. <强>脚本:

    1. 获取所需的目标文件夹var parentFolder = DriveApp.getFolderById("{put your folder id here}");
    2. 添加您的代码
    3. 当您在父文件夹中创建新文件夹时,只需从之前创建的.createFolder()中调用parentFolder方法:var folder = parentFolder.createFolder();
    4. 编辑过的脚本:

          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!";
                }