如何根据部分文件名使用Google脚本自动在Google云端硬盘中移动文件?

时间:2019-05-10 18:44:55

标签: file google-apps-script move google-drive-team-drive

我是Google脚本的新手。我们希望根据文件名的一部分,将所有上传到Google云端硬盘中单个文件夹的文件自动移至其他文件夹。 3个示例文件:APX PMT 05.02.2019,ALT PMT 05.03.2019,BEA PMT 05.04.2019 我们希望根据文件名的前3个字母将这些文件移动到目标文件夹中。 APX PMT 05.02.2019移至APX文件夹,ALT PMT 05.03.2019移至ALT文件夹,等等。

没有代码示例,因为我对此非常陌生。 functions是我学习此内容的一个很好的开始,但是仍然不确定如何仅根据文件名的一部分来移动文件。

结果:希望人们能够将文件上传到单个目标位置,并且代码自动将它们移动到适当的文件夹中。

测试代码版本2.0。如果我删除两个字符集之间的空格(将BEA RFT更改为BEARFT或BEA_RFT),则工作原理如下,因为我们的工作场所希望它们现在按文件名中的前7个字符进行排序。字符中有空格时如何使它工作?:

function moveFiles() {
  var dfldrs=['BEA RFT', 'BEA ADJ', 'BEA PMT', 'BEA CHG'];//Seven letter prefixes
  var ofObj={BEA RFT:'ID',BEA ADJ:'ID',BEA PMT:'ID',BEA CHG:'ID'};//distribution folder ids
  var upldFldr=DriveApp.getFolderById('ID');
  var files=upldFldr.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var key=file.getName().slice(0,7);
    var index=dfldrs.indexOf(key);
    if(index>-1) {
      Drive.Files.update({"parents": [{'id': ofObj[key]}]}, file.getId());  
    }
  }
}

1 个答案:

答案 0 :(得分:0)

移动文件

请在运行脚本之前阅读这些说明

  1. 您需要提供三个字母前缀
  2. 您需要提供与每个前缀关联的分发文件夹ID
  3. 您需要提供上传文件夹ID
  4. 您需要从上传文件脚本中运行该程序,或者根据需要提供其他触发功能。
  5. 您需要启用Advance Drive API版本2

代码

function moveFiles() {
  var dfldrs=['APX','ALT','BEA'];//Three letter prefixes
  var ofObj={APX:'APX id',ALT:'ALT id',BEA:'BEA id'};//distribution folder ids
  var upldFldr=DriveApp.getFolderById('folderid');
  var files=upldFldr.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var key=file.getName().slice(0,3);
    var index=dfldrs.indexOf(key);
    if(index>-1) {
      Drive.Files.update({"parents": [{"id": ofObj[key]}]}, file.getId());  
    }
  }
}

Drive API Reference