根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中相关的知识,希望对你有一定的参考价值。

我有数百个Google文档和许多Google文件夹。它们在文件名中共享一个公共字符串。文档需要进入相应的文件夹,我想用一些脚本自动执行此操作。

我想做的是如下:

我有数百个Google文档,它们遵循文件名中的类似模式:

SURNAME, Forename_userID_fileName

所以,例如,

DOE, Jane_jd5678_Document3
PUBLIC, Tom_tp9123_reportTPS
SMITH, John_js1234_finaldocument

等等等等。

我在Google Team Drive中也有相应的文件夹,设置如下:

SURNAME, Forename (userCode) (userID) - userType

所以,例如,

DOE, Jane (145374578) (jd5678) - AET Full Time
PUBLIC, Tom (673468714) (tp9123) - NR Full Time
SMITH, John (874512456) (js1234) - AET Part Time

文件和文件夹名称之间的公共字符串是userID字符串。

目前我下载了所有文档,然后上传拖放到每个相应的文件夹中。需要很长时间!我希望有一些应用程序脚本可以自动完成,但我真的不知道从哪里开始。任何人有任何指针?

This StackOverflow question似乎想要做我想做的事情,但由于我是Apps Script的初学者,我无法真正破译解决方案。

答案

这是使用基本Google Apps脚本DriveApp指向正确方向的基本示例(与高级脚本服务版本或其他Google Drive API方法相对)。我想到的主要问题是如果此示例需要很长时间才能完成,脚本超时。如果发生这种情况,您将需要一个更复杂的解决方案。你也可以通过让idRegex工作,例如,姓氏A-D然后是E-G等来使其大块化。示例正则表达式可以匹配你用下划线的随机文件;如果这是一个问题,你可能想找到一个更复杂的正则表达式。

function organizeFilesById() {
  var idRegex = /_[A-z]+[0-9]+_/;
  var files = DriveApp.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    var filename = file.getName();
    var id = idRegex.exec(filename);
    if (! id) {
      continue;
    } else {
      id = id[0];
    }
    var query = "title contains '" + id + "'";
    var folders = DriveApp.searchFolders(query);
    if (folders.hasNext()) {
      var folder = folders.next();
      Logger.log("Will add %s to %s", filename, folder.getName());
      //folder.addFile(file); // uncomment line to actually do it
    } else {
      Logger.log("No folder found for %s", filename);
      // could create folder or just report "folder not found"
    }
  }
}

以上是关于根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

用于将 google drive 中的文件名列表与 google sheet 列中的名称列表进行比较的 Apps 脚本,以将新文件从驱动器添加到工作表

根据文件名将 Google Cloud 存储桶中的多个文件复制到不同的目录

如果Google Drive文件夹中已经存在相同名称的文件,则附加代码以覆盖PDF

在 Google Play 中为 aab 映射文件

检查字符串名称是不是与 images.xcassets 中的资产匹配

如何通过根据文件夹名称中存在的关键字对文件夹进行分组来将文件夹移动到其他文件夹?