更新文件夹和子文件夹中所有文件中的单页纸

时间:2019-01-31 20:28:21

标签: google-sheets

因此,我的任务是编写代码,该代码将遍历Google云端硬盘当前文件夹中的所有文件,并更新位于第四个标签中的名为“工件和证据”的特定工作表,其内容位于脚本运行的工作表。这一切都非常有效,我能够与我的管理员团队共享此表。除了......

一名管理员负责两座建筑物。因此,她的文件夹和子文件夹以及子子文件夹包含需要更新的Google表格。因此,我需要将此代码修改为:

1)搜索当前文件夹中的所有文件和子文件夹。 2)搜索文件名,以查看文件名是否包含文本“ 18/19 supersheet”,因为她用一个人的名字重命名了每个文件,后跟该文本(例如:Smith,John-18/19 supersheet) 3如果标题匹配,则基本上要运行脚本,我已经必须使用此新信息来更新该文件。

我一生无法找到如何搜索所有文件(包括子文件夹中的文件),然后检查标题以查看其是否包含正确的信息。请记住,此“工作表”将仅位于“根”文件夹中,因此需要在文件夹名称之间进行一些调整。预先感谢您的帮助。这让我发疯了!

// Function to copy sheets from one file to others in folder
function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pasteSheet = [ {name: "lick to Copy Tab to all Sheets in Folder", functionName: "copySheet"}];
  ss.addMenu("Copy to EE", pasteSheet);
}

function copySheet() {
  var source = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = source.getSheets()[3];  // Change number to sheet number with index 0 ex: sheet 1=0, sheet 2=1, etc.
  var sourceFile = DriveApp.getFileById(source.getId());
  var sourceFolder = sourceFile.getParents().next();
  var folderFiles = sourceFolder.getFiles();
  var thisFile; 
  var ss1 = SpreadsheetApp.getActiveSpreadsheet();
  //var sheets1 = ss1.getSheets();

  while (folderFiles.hasNext()) {
    thisFile = folderFiles.next();
    if (thisFile.getName() !== sourceFile.getName()){
      var currentSS = SpreadsheetApp.openById(thisFile.getId());
      sheet.copyTo(currentSS);
      currentSS.getSheets()[currentSS.getSheets().length-1].setName('THIS WAS COPIED');
      currentSS.setActiveSheet(currentSS.getSheetByName('THIS WAS COPIED'));
      currentSS.moveActiveSheet(4);
      currentSS.deleteSheet(currentSS.getSheetByName('Artifacts and Evidence'));
      currentSS.getSheetByName('THIS WAS COPIED').setName('Artifacts and Evidence');


    }    
  };
}

1 个答案:

答案 0 :(得分:0)

您基本上需要递归操作,这就是开始您的想法:

这将是伪代码:

主要功能:

function selecionar(string $sql): array
{
    $result = [];

    // code that executes a query and fetches results,
    // adding the rows to $result if there are any

    return $result;
}

函数getFiles(folderID)

     folderID = "MAINFOLDERXXXJTTY";
     getFiles(folderID);
     getSubFolders(folderID);

函数getSubFolders(folderID)

var folder = DriveApp.getFolderByID(folderID);
var files = folder.getFiles;
    while (files.hasNext()) {
        var childFile = files.next();
        var fileName = childFile.getName();
        //DO WHATEVER WITH THE NAME;
        }