【问题标题】:Google Apps Script: add folder to folderGoogle Apps 脚本:将文件夹添加到文件夹
【发布时间】:2016-06-15 09:08:05
【问题描述】:

我使用脚本将带有图像的文件夹上传到(父?)文件夹。当我这样做时,确实会以正确的方式创建文件夹结构。但是,当我第二次尝试时,它会在根目录中创建一个同名的新文件夹。

如何更改我的代码,以便有一个将添加图像文件夹的父文件夹?

目前:

  • 第一次:/root/persons/test test@test.com/(此文件夹内的图片)
  • 第二次新建地图:/root/persons/test2 test2@test2.com/(此文件夹内的图片)

我想要:
/root/persons/*(folders)/(此文件夹中的图片)

我的代码:

/* The script is deployed as a web app and renders the form */
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html')
        .setSandboxMode(HtmlService.SandboxMode.NATIVE);
// This is important as file upload fail in IFRAME Sandbox mode.
}

/* This function will process the submitted form */
function uploadFiles(form) {

try {

/* Name of the Drive folder where the files should be saved */
var dropbox = form.myName + " " + form.myEmail;
var folder, folders = DriveApp.getFoldersByName(dropbox);

/* Find the folder, create if the folder does not exist */
if (folders.hasNext()) {
  folder = folders.next();
} else {
  var firstLevelFolder = DriveApp.createFolder("Persons");
  var folder = firstLevelFolder.createFolder(dropbox);
}

/* Get the file uploaded though the form as a blob */
var blob = form.myFile;    
var file = folder.createFile(blob);    

/* Set the file description as the name of the uploader */
file.setDescription("Uploaded by " + form.myName);

/* Return the download URL of the file once its on Google Drive */
return "File uploaded successfully " + file.getUrl();

} catch (error) {

/* If there's an error, show the error message */
return error.toString();
}

}

【问题讨论】:

    标签: google-apps-script google-drive-api


    【解决方案1】:

    您没有测试“Persons”文件夹是否存在,因此每次您有一个新用户时,您都会重新创建该文件夹。我建议在函数的早期执行此操作,如下所示:

    /* Find the first level folder, create if the folder does not exist */
    var firstLevelFolderName = "Persons";
    var folders = DriveApp.getFoldersByName(firstLevelFolderName);
    var firstLevelFolder = (folders.hasNext()) ? folders.next() : DriveApp.createFolder(firstLevelFolderName);
    

    注意使用ternary operator ? 将赋值保留在一个语句中,而不是显式的if..then..else 结构。相同的模式可用于任何正在评估“查找与创建”的迭代器。

    更新脚本:

    /* This function will process the submitted form */
    function uploadFiles(form) {
      
      try {
        /* Find the first level folder, create if the folder does not exist */
        var firstLevelFolderName = "Persons";
        var folders = DriveApp.getFoldersByName(firstLevelFolderName);
        var firstLevelFolder = (folders.hasNext()) ? folders.next() : DriveApp.createFolder(firstLevelFolderName);
        
        /* Find the user-specific folder, create if the folder does not exist */
        var dropbox = form.myName + " " + form.myEmail;    /* Name of the Drive folder where the files should be saved */    
        folders = DriveApp.getFoldersByName(dropbox);
        var folder = (folders.hasNext()) ? folders.next() : firstLevelFolder.createFolder(dropbox); 
        
        /* Get the file uploaded though the form as a blob */
        var blob = form.myFile;    
        var file = folder.createFile(blob);    
        
        /* Set the file description as the name of the uploader */
        file.setDescription("Uploaded by " + form.myName);
        
        /* Return the download URL of the file once its on Google Drive */
        return "File uploaded successfully " + file.getUrl();
        
      } catch (error) {
        
        /* If there's an error, show the error message */
        return error.toString();
      }
      
    }
    

    【讨论】:

      【解决方案2】:

      这对我来说可以在现有文件夹中创建一个文件夹

      const parentFolder = DriveApp.getFolderById("1TukDeifX_nYZftbzODkUfD-hYlpx5TPg");
      const folder1 = parentFolder.createFolder(Project + ", " + Date + ", " + Phone);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        • 2020-02-21
        相关资源
        最近更新 更多