Comment puis-je supprimer les fichiers en double dans Google Drive à l'aide d'un script d'application avec javascript?


Je souhaite identifier les fichiers en double dans Google Drive et les supprimer. veuillez guider ou corriger mycode.

while (folder.hasNext()) {
        var folders = folder.next();
        var Getfiles = folders.getFilesByName(file.getName());
        Logger.log("Folder Name: " + folders.getName());
        while (Getfiles.hasNext()) {
          var Getfile = Getfiles.next();
          if(Getfile.getFilesByName(Getfile.getName()) >1)
          //I don't know what to do here
        }
      }
Author: Thomas Chirwa, 2018-01-08

2 answers

Ma question pour vous serait de savoir comment définissez-vous un fichier en double semblent vous être juste vérifier si le nom est le même. Quid des fichiers dans des répertoires différents, des fichiers de différentes tailles, ou s'ils ont des dates différentes. Lequel voulez-vous garder?

Si je faisais cela, je vérifierais le nom du fichier, l'emplacement et la date pour m'assurer que j'ai le fichier le plus récent.

J'exécuterais un fichier .list et obtenez une liste de tous les fichiers sur mon compte Google Drive. Alors je voudrais trier les fichiers localement par répertoire puis par nom et date. Une fois les fichiers triés, je les exécuterais s'il y avait plus d'un fichier, j'envoyais un fichier .supprimez dans Google pour chacun des fichiers en double. Le problème ici est que vous allez devoir faire toute la comparaison localement.

, Techniquement parlant, vous pouvez également faire un fichier.list puis boucle chaque fichier et crée un autre fichier .list demande à Google demandant avec le paramètre q vous cherchez d'autres fichiers du même nom. Vérifiez ce qui est retourné et supprimez tous les fichiers retournés qui se trouvent dans le même répertoire que le fichier que nous vérifions et qui ont une date plus jeune. Cette solution va manger plus de votre quota que vous faites plus de demandes à Google.

 1
Author: DaImTo, 2018-01-08 10:21:43

C'est mon code de travail, j'espère que cela peut aider certains d'entre vous qui pourraient avoir besoin de quelque chose de similaire.

 for (var msgIdx=0; msgIdx<messages.length; msgIdx++) {
        var message = messages[msgIdx];
        Logger.log("INFO:       Processing message: "+message.getSubject() + " (" + message.getId() + ")");
        var messageDate = message.getDate();
        var attachments = message.getAttachments();
        for (var attIdx=0; attIdx<attachments.length; attIdx++) {
          var attachment = attachments[attIdx];
          Logger.log("INFO:         Processing attachment: "+attachment.getName());
          try {
            var folder = getOrCreateFolder(rule.folder);
            var getFoldersByName = DriveApp.getFoldersByName(rule.folder);
             var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
             while (getFoldersByName.hasNext()) {
              var FetchhedFolders = getFoldersByName.next();
              var GetFiles = FetchhedFolders.getFiles();
              while (GetFiles.hasNext()) {
                var files = GetFiles.next();
                var GetFileName = FetchhedFolders.getFilesByName(newFilename);
                if(GetFileName.hasNext() )
                {
                  FetchhedFolders.removeFile(newFilename);
                }else if (!GetFileName.hasNext())
                {
                 var file = folder.createFile(attachment);                               
                 if (rule.filenameFrom && rule.filenameTo && rule.filenameFrom == file.getName()) {
                  Logger.log("INFO:           Renaming matched file '" + file.getName() + "' -> '" + newFilename + "'");
                  file.setName(newFilename);
                }
                else if (rule.filenameTo) {
                  var newFilename = Utilities.formatDate(messageDate, config.timezone, rule.filenameTo.replace('%s',message.getSubject()));
                  Logger.log("INFO:           Renaming '" + file.getName() + "' -> '" + newFilename + "'");
                  file.setName(newFilename);
                }
                file.setDescription("Mail title: " + message.getSubject() + "\nMail date: " + message.getDate() + "\nMail link: https://mail.google.com/mail/u/0/#inbox/" + message.getId());
                Utilities.sleep(config.sleepTime);
                }
              }
            }

          } catch (e) {
            Logger.log(e);
          }
        }
      }
 0
Author: Thomas Chirwa, 2018-01-09 09:56:30