0

我正在使用 Google 应用程序脚本开发一个网络应用程序,用户可以在其中搜索和打开其驱动器中的文件。现在我用这个循环显示文件:

var files = DriveApp.searchFiles('title contains "banana"');
var fileCount = 0;

while (files.hasNext()) {
  var file = files.next();
  app.getElementById('displayFilesPanel').add(app.createAnchor(file.getName() + ' - ' + file.getOwner().getEmail(), file.getUrl()));
  fileCount++;
}

这里的问题是 getOwner() 方法需要相当长的时间(大约 0.1 秒),加起来相当快。另一件事是这些代表文件的链接看起来不太好。

有什么方法可以使用 DriveApp.searchFiles() 进行这些搜索并使用锚点/链接以外的其他内容显示结果?

编辑: 正如 Zig Mandel 和 Serge insas 提到的,应该考虑 HTML-Service 让它看起来更好。我发现 DriveApp.searchFiles 函数不是很有用,因为当我将它与“标题包含“香蕉”之类的参数一起使用时,它不会在 5 分钟超时限制内完成。问题是它找到了大约 40 个匹配项,但随后继续并可能检查了我驱动器中的所有其他 (>120000) 文件。就我而言,我使用 getAllFilesForPaging(number, token)-function 并使用 .indexOf('banana') != -1-method 检查每个文件的标题是否包含“banana”。

4

2 回答 2

1

您无法解决 DriveApp 的速度问题。它显然是在进行另一次往返以获取所有者的电子邮件。为了让它看起来更好使用 htmlService 而不是 uiApp。在两者中,您都可以添加文件图标以使其看起来更好。

于 2013-11-11T15:32:24.777 回答
1

从外观上看,即使 Zig 在推荐 HTML 服务时是对的,使用 UiApp 仍然可以获得有趣的结果。

例如,请参阅该链接,其中动画 gif 代表链接

也就是说,我不得不承认这不是地球上最简单的事情:-)但它仍然有效!

这是我用来获取上述示例的代码(完整的应用程序代码,请查看我使用的 2 个小部件):

function doGet(){
  var app = UiApp.createApplication().setStyleAttribute("background", "#CCCCFF").setTitle('Anchor Test')
  var top = '100PX';// define dimensions and position
  var left = '100PX';
  var width = '80PX';
  var height = '80PX';
  var mainPanel = app.createVerticalPanel();

  var customAnchor = app.createHorizontalPanel().setId('usethisId')
  addStyle(customAnchor,top,left,width,height,'1','1')

  var image = app.createImage("https://dl.dropbox.com/u/211279/Time-change-clock_animated_TR80.gif")
  addStyle(image,top,left,width,height,'1','1')

  var realAnchor = app.createAnchor('This is the Anchor', 'https://sites.google.com/site/appsscriptexperiments/home')  
  addStyle(realAnchor,top,left,width,height,'2','0')


  customAnchor.add(realAnchor);
  customAnchor.add(image)
  mainPanel.add(customAnchor);
  app.add(mainPanel);
  return app;
}

function addStyle(widget,top,left,width,height,z,visibility){
widget.setStyleAttributes( 
    {'position': 'fixed', 
     'top' : top,
     'left' : left,
     'width' : width, 
     'height':height,
     'opacity' : visibility,  
     'zIndex' : z});
   }  

关于速度:没有评论,它确实很慢,如果你有很多文件,由于 5 分钟的限制,你碰巧无法到达列表的末尾......我知道没有解决方案:-/

于 2013-11-11T15:46:50.010 回答