创建新文件夹并复制google工作表,新名称为新文件夹

时间:2017-12-13 19:08:21

标签: google-apps-script google-sheets

我正在尝试根据电子表格中的数据自动在Google云端硬盘中创建新文件夹。电子表格从表单中获取信息。我已经找到了如何使用脚本创建新文件夹,但有以下问题:

  1. 每次运行脚本时,如何避免创建重复的文件夹?例如,如果已创建名为“1808”的文件夹,我不希望脚本创建“1808(1)”
  2. 我想从其他位置复制电子表格并插入我正在创建的新文件夹中。将使用同一电子表格中的信息创建新文件名。

    void Count1(int a, int b)
    
    void Count2(int a, int b)
    
    void Count3(int a, int b)
    

2 个答案:

答案 0 :(得分:0)

  

每次运行脚本时,如何避免创建重复的文件夹?   例如,如果名为' 1808'已经创建了,我不知道   希望脚本创建' 1808(1)'

您可以获取所有文件夹名称的列表并循环浏览它们以检查是否与新文件夹名称匹配!类似的东西:

function MakeNewFolders(rootFolderID, folderNames)
    // Get master folder 
    var rootFolder = DriveApp get folder (rootFolderID)
    var subfolders = rootFolder.getFolders()
    var alreadyExists = false;
    var newFolder;

    // Check if any subfolder already exists
    //   loop for folders first, to minimize GAS function calls
     while (subfolders.hasNext()) {
        var subfolderName = subfolders.next().getName();
        loop (each folder in folderNames) {
            if (subfolderName == newFolderName)
                alreadyExists = true;
        }
        if (!alreadyExists)
            newFolder = rootFolder.createFolder(newFolderName)
     }

如果有一个TON的文件夹需要循环(超过60-ish),here is a code snippet you might find handy。基本上,the original Google example获取子文件夹列表的速度是检查folder.hasNext()所需的两倍,当你可以使用try-catch块并忽略"你是到了最后!"抛出异常。应该将执行时间缩短一半! :)

  

我想从其他位置复制电子表格并插入   我正在创建的新文件夹。将创建新文件名   使用同一电子表格中的信息。

尝试这样的事情!

function CopyFile(originalFileID, destinationFolderID) {
  var destinationFolder = DriveApp.getFolderById(destinationFolderID) ;
  var fileToCopy = DriveApp.getFileById(originalFileID)
  var copiedFile = fileToCopy.makeCopy(<new name>, destinationFolder)
  fileToCopy.setTrashed(true); // alternatively, you can use 
    // Drive.Files.remove(originalFileID);  
}

希望这有帮助!我使用GAS已经有一段时间了,希望这可以编译:)

答案 1 :(得分:0)

您可以为创建的新文件夹的名称添加时间戳。每个时间戳对于millesecond都是唯一的:

function uniqueFolderName() {
    var folderName = "1808";
    var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyyMMddHHmmssSSS");
    var newFolderName = folderName + formattedDate;
    Logger.log(newFolderName);
}