【问题标题】:How to get a list of files matching a cell value in GAS?如何获取与 GAS 中的单元格值匹配的文件列表?
【发布时间】:2018-01-24 13:28:52
【问题描述】:

我希望制作(我希望是)一个非常基本的脚本,您可以在其中将部分文档名称输入到 Google 电子表格中,下面会显示您的云端硬盘中标题中包含该单词的文件.

例如,我的云端硬盘中有两个文件名为“Rome Adventure”和“London Adventure”,如果您在单元格中输入“Rome”、“London”或“Adventure”,文件标题将出现在下方。

到目前为止,我得到了这个:

function onEdit(e){

  // Gets the edited cell, turns it into string

  var activeSheet = e.source.getActiveSheet();
  var range = e.range;
  var input = range.getCell(1,1).getValue();
  var SearchString = 'title contains "' + input + '"';


  // Searches Drive for files with titles containing whatever you typed
  // and appends titles to the spreadsheet

  var result = DriveApp.searchFiles(SearchString);
  while (result.hasNext()) {
    var file = result.next();
    activeSheet.appendRow([file.getName()]);
  }
}

但不幸的是,无论我输入什么,都没有附加任何内容。我已经尝试过“罗马”、“伦敦”以及我能想到的所有其他内容。考虑到我可能在第一部分中塞了一些东西,我补充道

range.setNote('Last modified: ' + new Date());

在两个部分之间,并且 起作用了。所以它肯定只是我塞满的 DriveApp.searchFiles。我以为我可能已经填满了 StringSearch 位,但是将行更改为

var result = DriveApp.searchFiles('title contains "Rome"');

仍然没有返回任何东西。

我只是一个发烧级程序员,这是我第一次在这里提问。如果这是一个愚蠢的问题,或者这是不可能的,请原谅我。我只是想尽办法让它发挥作用。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您的功能没有问题。由于使用onEdit 触发器搜索DriveApp 的未记录限制,它失败了。如果您按原样运行脚本,然后转到查看 > 执行脚本,您将在底部看到失败消息。

    您可以从自定义菜单成功调用该函数。使用.getActiveCell(),而不是查看已编辑的行。它将在电子表格上的选定单元格内搜索字符串。下面是一个工作示例。

    function onOpen() {
      SpreadsheetApp.getUi().createMenu("Search").addItem("Run", "searchFiles").addToUi();
    }
    
    function searchFiles() {
      var string = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell().getValue();
      var result = DriveApp.searchFiles('title contains "' + string + '"');
    
      while (result.hasNext()) {
        var file = result.next();
        SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().appendRow([file.getName()]);
      }
    }
    

    【讨论】:

    • 布赖恩,你是救命恩人!这完美!谢谢你。是否可以使用 onEdit 触发器来调用您编写的 searchFiles 函数?还是没有办法使用该触发器搜索 DriveApp?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2020-06-07
    • 2019-11-30
    • 2020-11-24
    • 2011-03-08
    相关资源
    最近更新 更多