好的,因此,当某个单元包含某个文本时,计划将自动将文件移动到太平洋文件夹。这是我所拥有的,我也是这种编码语言的新手,所以我同时学习!
到目前为止,我到目前为止得到的一切确实有效,但要做更多的解释:
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{...}
进行测试。