代码之家  ›  专栏  ›  技术社区  ›  Taylor Huddleston

显示Google站点上所有Google Drive文件的列表

  •  2
  • Taylor Huddleston  · 技术社区  · 10 年前

    我正在尝试将其显示为web应用程序。它只返回站点上的1个文件。日志显示50多个文件。为什么htmloutput不像日志那样显示所有文件。任何帮助都会很棒。

    function doGet(e) {
      var query = 'fullText contains "Printers"' ;
      var folders, pageToken;
      do {
        folders = Drive.Files.list({
          q: query,
          maxResults: 100,
          pageToken: pageToken
        });
    
        if (folders.items && folders.items.length > 0) {
          for (var i = 0; i < folders.items.length; i++) {
            var folder = folders.items[i];
    
            Logger.log('%s (ID: %s)', folder.title, folder.id);
          }
        } else {
        }
        var Output3 = folder.id; 
        var output = HtmlService.createHtmlOutput(Output3);
        pageToken = folders.nextPageToken;
      } while (pageToken);
    
      return output
    }
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Alan Wells    10 年前

    每次你 for 循环迭代,它将覆盖前面的内容。

    var Output3 = folder.id;
    

    您需要使用以下内容:

    var Output3 = "";//define this outside the `for` loop
    Output3 = Output3 + folder.id;
    

    下面是对完整代码的重新编写:

    function doGet() {
      var query = 'fullText contains "Printers"' ;
      var folders, folder, pageToken, foldersLngth = 0, theItems, output="";
    
      do {
        folders = Drive.Files.list({
        q: query,
        maxResults: 100,
        pageToken: pageToken
      });
    
      foldersLngth = folders.items.length;
      theItems = folders.items;
    
      if (theItems && foldersLngth > 0) {
    
        for (var i=0; i < foldersLngth; i++) {
          folder = folders.items[i];
          Logger.log('%s (ID: %s)', folder.title, folder.id);
          output = output + folder.title + ", " + folder.id;
        };
      };
    
      //var Output3 = folder.id; 
      //HtmlService.createHtmlOutput(Output3);
      pageToken = folders.nextPageToken;
      } while (pageToken);
    
      return HtmlService.createHtmlOutput(output);
    };