因此,我的任务是编写代码,该代码将遍历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');
}
};
}
答案 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;
}