Google apps script 使用应用程序脚本可以将包含相同文件夹名称的文件移动到该匹配文件夹吗

Google apps script 使用应用程序脚本可以将包含相同文件夹名称的文件移动到该匹配文件夹吗,google-apps-script,Google Apps Script,请参阅随附的屏幕截图。 我想将文件移动到一个名为folder的文件夹中。 在这里,如果您可以看到文件(ABC1和testABC2)应该移动到文件夹ABC,同样,文件123xyz应该移动到文件夹xyz。 伙计们,请告诉我正确的方法和剧本 `function MoveFiles(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var ui = SpreadsheetApp.getUi(); var ssid = ss.getId(

请参阅随附的屏幕截图。 我想将文件移动到一个名为folder的文件夹中。 在这里,如果您可以看到文件(ABC1和testABC2)应该移动到文件夹ABC,同样,文件123xyz应该移动到文件夹xyz。 伙计们,请告诉我正确的方法和剧本

`function MoveFiles(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ui   = SpreadsheetApp.getUi();
  var ssid = ss.getId();
  var ssparents = DriveApp.getFileById(ssid).getParents().next();
  Logger.log('1.parent folder-'+ssparents);


//  var files = ssparents.getFiles();


//-------------------------
    var folderIterator = ssparents.getFolders();
    for (var k =1; folderIterator.hasNext(); k++)
    {

       var folder = folderIterator.next().toString();
            Logger.log('----------------------------------------- ');
            Logger.log('------FOLDER NAME USING FOR LOOP. '+k+' - '+folder);

            var filesIterator = ssparents.getFiles();
            for ( var i = 0;filesIterator.hasNext();i++)         /*to check files in parent folder */
            {

//                Logger.log('2.'+i+' - '+file4+ ' checking for folder- '+ folder);
//                var param= " title contains '"+folder+"' ";
                var checkFileName = ssparents.searchFiles(" title contains '"+folder+"' ");
                for  (var j=0; checkFileName.hasNext();j++) 
                {
                  var file2 = checkFileName.next().getName();
                  var check= filesIterator.next().toString();
                  Logger.log(check+'-------'+file2+'-value of checkFileName '+folder);
                }                
            }
    }

/*  // addding files to other folder and removing fromthe base folder
//    row.toString().match(item) == item //file.toString().match(ssparents)

    var destination = DriveApp.getFolderById('1U8_0NT4h1QRy00eJHAFaH9mKmsVptaz9');
    Logger.log('4. check - '+ destination)
    destination.addFile(file);
    var pull = DriveApp.getRootFolder();
    pull.removeFile(
    file);


enter code here

  }
 */ 
 SpreadsheetApp.flush();
}`

  [1]: https://i.stack.imgur.com/AmrbM.png
指定:

contains运算符仅对标题执行前缀匹配。对于 例如,标题“HelloWorld”将与包含“Hello”的标题匹配 但标题中不包含“世界”

这就是为什么不能通过查询
searchFiles(“标题包含“ABC”)来检索文件,例如
testABC2
解决方法

  • 您需要列出父文件夹中的所有文件
  • 检索他们的名字
  • 使用方法将文件名与文件夹名进行比较
基于脚本的示例代码片段:

function MoveFiles(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ui   = SpreadsheetApp.getUi();
  var ssid = ss.getId();
  var ssparents = DriveApp.getFileById(ssid).getParents().next();
  Logger.log('1.parent folder-'+ssparents);
  var folderIterator = ssparents.getFolders();
  while (folderIterator.hasNext())
  {
    var folder = folderIterator.next();
    Logger.log("folder name: '"+folder.toString()+"' ");
    var filesIterator = ssparents.getFiles();      
    while (filesIterator.hasNext())         //to check files in parent folder 
      {
      var file=filesIterator.next();
      if (file.getName().indexOf(folder) > -1) {
        Logger.log("file "+file.getName()+" found");
        folder.addFile(file);
        ssparents.removeFile(file);
      }
    }
  }
}

谢谢@ziganotschka,这非常有帮助。将来如果我需要任何指导,我会直接与您联系。“我如何联系你?”TejsHedodRay:我很高兴如果我的回答对你有帮助,如果是这样的话,请考虑将它标记为对类似问题的其他用户增加可见性。然而,我只活跃在Stackoverflow上,这是一个公共论坛。我相信,如果将来您在stackoverflow上发布其他问题,并提供很好的解释和代码片段,例如您当前的问题,那么总会有用户乐于帮助您。