gpt4 book ai didi

javascript - 如何同时正确使用searchFile和searchFolder? - 应用程序脚本

转载 作者:行者123 更新时间:2023-11-30 20:02:08 25 4
gpt4 key购买 nike

下一个脚本是从特定文件夹开始搜索驱动器中具有特定名称的所有电子表格。

function searchSSH(folder, path) { 
if (folder == null && path == null) {
return
searchSSH(DriveApp.getFolderById("ID"), "");
}

var files = [];

path = path + "/" + folder.getName();
var searchFile = "fullText contains 'Project <>' and mimeType='" + MimeType.GOOGLE_SHEETS + "'";
var fileIterate = folder.searchFiles(searchFile);

while ( fileIterate.hasNext() ) {
var file = fileIterate.next();
var fileId = file.getId();
var name = file.getName();
files.push(name);

for (var i=0; i<files.length; i++){
Logger.log(files[i]);
}
}

var folderIterate = folder.getFolders();
while(folderIterate.hasNext()) {
var searchFold = searchSSH(folderIterate.next(), path);
for (var i = 0; i < searchFold.length; i++) {
files.push(searchFold[i]);
}
}
return files;
}

我想做的是看看我该怎么做,这样我也可以像 searchFile 一样查找某个文件夹。确实如此,我尝试这样做...

    function searchSSH() {         
var Folder = DriveApp.getFolderById("ID");

var folders = Folder.searchFolders('fullText contains "project"');
while (folders.hasNext()) {
var folder1 = folders.next();
Logger.log(folder1.getName());
for (var i = 0; i < folder1.length; i++) {
files.push(folder1[i]);
}
}

var files = [];
var searchFile = "fullText contains 'test <>' and mimeType='" + MimeType.GOOGLE_SHEETS + "'";
var fileIterate = Folder.searchFiles(searchFile);

while ( fileIterate.hasNext() ) {
var file = fileIterate.next();
var fileId = file.getId();
var name = file.getName();
files.push(name);

for (var i=0; i<files.length; i++){
Logger.log(files[i]);
}
}
return files;
}

但不起作用。我要做的是遍历所有文件夹,直到找到名称为 project 的文件夹。并继续在该文件夹中迭代,直到找到所有带有 test 的电子表格名称,但只在第一个文件夹中搜索。

最佳答案

  1. I try to iterate between folders until I find the folder with the name Project and inside that folder keep iterating until I find the file with the name Test and that it is type spreadsheet.
  2. The first script if it finds the file but I want to specify I look inside the folders with the name Project to improve the performance of the script
  3. The second script I'm trying is not iterating, so it does not work because when I run it, it only finds the first folder and dont searching inside the others folders, Thanks for trying to help me. I hope that now it has given me to understand

从您的回复中,我了解到如下内容。

  • 您想在名称为Project 的文件夹下检索文件名为Test 的电子表格。您希望以较低的流程成本做到这一点。

如果我的理解是正确的,这些示例脚本怎么样?请根据您的情况从中选择。我认为您的情况有几个答案。因此,请将此答案视为其中之一。

模式一:

流程:

  1. 使用 getFilesByName()Test 的文件名中检索文件。
  2. 使用 getParents() 检索每个文件的父文件夹。
  3. 如果文件夹名称是 Project 并且 mimeType 是 Spreadsheet,它会检索文件。

示例脚本:

var fileName = "Test";
var folderName = "Project";
var files = DriveApp.getFilesByName(fileName);
while (files.hasNext()) {
var file = files.next();
var parents = file.getParents();
while (parents.hasNext()) {
var parent = parents.next();
if (file.getMimeType() == MimeType.GOOGLE_SHEETS && parent.getName() == folderName) {

// do something

}
}
}

模式二:

流程:

  1. 使用 getFoldersByName()Project 的文件夹名称中检索文件夹。
  2. 使用 getFilesByName() 检索每个文件夹中的文件。
  3. 如果文件名是 Test 并且 mimeType 是 Spreadsheet,它会检索文件。

示例脚本:

var fileName = "Test";
var folderName = "Project";
var folders = DriveApp.getFoldersByName(folderName);
while (folders.hasNext()) {
var folder = folders.next();
var files = folder.getFilesByName(fileName);
while (files.hasNext()) {
var file = files.next();
if (file.getMimeType() == MimeType.GOOGLE_SHEETS && file.getName() == fileName) {

// do something

}
}
}

模式三:

流程:

  1. 使用 getFoldersByName() 检索 Project 文件夹名称的文件夹 ID。
  2. 使用 searchFiles() 检索包含 Project 父文件夹和 Test 文件名以及 Spreadsheet mimeType 的文件。

示例脚本:

var fileName = "Test";
var folderName = "Project";
var folders = DriveApp.getFoldersByName(folderName);
var folderIds = [];
while (folders.hasNext()) {
folderIds.push(folders.next().getId());
}
folderIds.forEach(function(id) {
var params = "'" + id + "' in parents and title='" + fileName + "' and mimeType='" + MimeType.GOOGLE_SHEETS + "'";
var files = DriveApp.searchFiles(params);
while (files.hasNext()) {
var file = files.next();

// do something

}
});

引用资料:

如果这些不是您想要的,我很抱歉。

关于javascript - 如何同时正确使用searchFile和searchFolder? - 应用程序脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com