Google脚本 - 当单元包含某些文本时,将太平洋文件移至文件夹



好的,因此,当某个单元包含某个文本时,计划将自动将文件移动到太平洋文件夹。这是我所拥有的,我也是这种编码语言的新手,所以我同时学习!

到目前为止,我到目前为止得到的一切确实有效,但要做更多的解释:

function filemove(root_folder, dest_folderinactive, dest_folderactive) {
var root_folder = DriveApp.getFolderById('0B_Nz0cop3s-ITTlYM21SNGIwNDg'); 
var dest_folderinactive = DriveApp.getFolderById('0B_Nz0cop3s-IQVZEWUNiQ1d2TzQ');
var dest_folderactive = DriveApp.getFolderById('0B_Nz0cop3s-IalFITGhzN3lTTzg');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var file = DriveApp.getFileById(spreadsheet.getId());
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "StatsData" ) {
var range = s.getRange("E16")
var values = range.getValues();
for(var i in values){
if(values[i][0].match("Not Police")!=null){
  dest_folderinactive.addFile(file);
  root_folder.removeFile(file);
} 
if(values[i][0].match("Police")!=null){
  dest_folderactive.addFile(file);
  root_folder.removeFile(file);
   }
  }
 }
};

好吧,这样做的是,如果单元格" e16"包含"不警察",它将将文件移至一个称为" intactive"的文件夹(dest_folderinactive(,如果该单元包含"警察",则将其移动到(dest_folderactive(同样,这些都来自所谓的" root"文件夹 - 我知道root表示Google驱动器的拳头页面,但是在这种情况下,包含这些文件的基本文件夹将其命名为root。此代码有时(有时(有时您必须多次运行它才能使其正常工作,并且它不是很有效。

当我希望这样做时,我的问题也出现,当一个文件在活动文件夹中,并且单元格向"警察"的单元更改,我希望它从活动中移动到活动,而对于活动说"非警察"进行无活动,但我似乎无法实现这一行动。如果某人可以提供帮助,这将非常有帮助,也知道此代码也不是第一次。

尝试此代码。根据目标单元的值,它将将文件移至所需文件夹。如果目标单元格中有垃圾数据,它还将将文件返回到提名的"根"文件夹中。您需要在代码顶部设置特定文件夹ID:如果需要将它们传递给,则需要在e之后将它们添加为参数。需要参数e来消耗onEdit触发事件数据(此功能不使用,但是如果您通过文件夹IDS进行了考虑(。

function filemove(e){
  // folder IDs
  var root_folder = 'root_folder_id_string';
  var dest_folderinactive = 'inactive_files_folder_id_string';
  var dest_folderactive = 'active_files_folder_id_string';
  // the specific destination folder on this run
  var dest_folder;
  // assume the file will move
  var move_file = true;
  // the spreadsheet & its parent folders
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var file = DriveApp.getFileById(spreadsheet.getId());
  var parents = file.getParents();
  var sheet = spreadsheet.setActiveSheet(spreadsheet.getSheetByName("StatsData"));
  // now grab the value of E16 & look for the string "police"
  // string.search(regEx) returns the position of the first match, otherwise -1
  var values = sheet.getRange("E16").getValues();
  switch(values[0][0].search(/police/i)){
    case -1:
      dest_folder = root_folder;
      break;
    case 0:
      dest_folder = dest_folderactive;
      break;
    default:
      dest_folder = dest_folderinactive;
  }
  // is the dest_folder in the parents array?
  while(parents.hasNext()){
    var fldr = parents.next().getId();
    if(fldr == dest_folder){
      // YES -- don't move the file
      move_file = false;
    } else{
      // NO -- are the other folders in the parents array?
      if(fldr == root_folder || fldr == dest_folderinactive || fldr == dest_folderactive){
        // YES -- remove the file from that folder
        DriveApp.getFolderById(fldr).removeFile(file);
      }
    }
  }
  // do we have to move the file?
  if(move_file){
    DriveApp.getFolderById(dest_folder).addFile(file);
  }
}

我正在介绍父母阵列&将它们与目标文件夹进行比较,以免您错误地从另一个文件夹中删除文件。

如果目标单元具有更多自由形式的数据&您正在寻找字符串的"警察"或"不是警察",那么switch()将不起作用。在这种情况下,您需要使用if(...){...} else if(...){...} else{...}进行测试。

相关内容

  • 没有找到相关文章

最新更新