【问题标题】:Google-App-Scripts-Search files does not find spreadsheetGoogle-App-Scripts-Search files 找不到电子表格
【发布时间】:2020-10-26 17:50:29
【问题描述】:

我创建了 3 个未命名的 Google 电子表格来测试这个脚本。在我的驱动器中搜索 title:untitled 或 just untitled 找到所有三个,但在此脚本中,searchFiles 方法找到 Doc 和 Slide,但没有找到 Spreadsheet 和 getFilesByName 没有找到任何!我还用 getFilesByName 尝试了“untitled”,但仍然没有找到。有什么想法有什么问题吗?

function findUntitledFiles() {
  Logger.log("Begin findUntitledFiles()");
  var fileName = "*untitled*";
  var file, folder , filesIt , foldersIt;
  filesIt = DriveApp.searchFiles(' title contains "untitled" ') ;  // did not find spreadsheet
//  filesIt = DriveApp.getFilesByName(fileName) ;   // found none
  while (filesIt.hasNext() )  {
    file = filesIt.next() ;
    Logger.log("file.getName() = " + file.getName() );
    foldersIt = file.getParents() ;
    folderName = (foldersIt.hasNext()) ? foldersIt.next().getName() : "unknown" ;
    Logger.log( "folder  " + folderName + "    file name: " + file.getName() );
  } 
}

【问题讨论】:

  • 作为一个忙碌的老师,我倾向于把无标题的文件到处留下。当学生没有在课堂上完成作业时,会为每个学生创建无标题文件。我喜欢偶尔清理一切。我不想要完全匹配。

标签: google-apps-script search google-drive-api getfiles


【解决方案1】:

对于 DriveApp.getFilesByName(fileName):

fileName 应该包含文件名的实际字符串。据我所知,不允许使用通配符。此外,幻灯片、文档和工作表都将具有不同的文件名 - 未命名的演示文稿、未命名的文档、未命名的电子表格。您可以通过这种方式搜索它们(如果您只是专门查看文档、表格、幻灯片):

function findUntitledFilesByName() {
    var fileCnt = 0;  
    var fileNames = ["Untitled presentation", "Untitled spreadsheet", "Untitled document"];

    for (var fileName in fileNames) {
        var files = DriveApp.getFilesByName(fileNames[fileName]);
        while (files.hasNext()){
            var file = files.next();
            var folders = file.getParents();
            var folderName = (folders.hasNext()) ? folders.next().getName() : "unknown" ;
            console.log( "folder  " + folderName + "    file name: " + file.getName());
            fileCnt++;
        };
    }  
}

For DriveApp.searchFiles('title contains "untitled"'):

您确定您的代码没有找到电子表格吗?当我尝试您的代码时,它发现所有无标题文件都很好。唯一的区别是我在 while 语句中有变量声明,因此变量中没有“旧”值。旁注...因为它使用 'title contains' 的参数,要搜索包含单词 untitled 的任何内容,它将返回具有 any 文件名的结果里面有“无题”这个词。因此,如果您有一个文件“One-Offs Untitled”,它将作为搜索结果返回。请记住这一点!

function findUntitledFilesUsingSearchFiles() {
    var fileCnt = 0;
    var files = DriveApp.searchFiles(' title contains "untitled" ') ;

    while (files.hasNext()){
        var file = files.next();
        var folders = file.getParents();
        var folderName = (folders.hasNext()) ? folders.next().getName() : "unknown" ;
        console.log( "folder  " + folderName + "    file name: " + file.getName());
        fileCnt++;      
    };
}

【讨论】:

  • 不是答案 - 效果不如原始代码。
【解决方案2】:

我创建了一个我是所有者的新电子表格,现在它被脚本找到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多