2013-11-10 3 views
0

Я разрабатываю веб-приложение со скриптом приложений Google, где пользователь сможет искать и открывать файлы со своего диска. Сейчас я отображать файлы с помощью этого цикла:Показать файлы и папки в веб-приложении Скриншот Google Apps

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 (число, токен) и проверял каждый файл, если заголовок содержал «банан» с .indexOf ('banana')! = -1-method.

ответ

1

Вы не можете получить информацию о скорости с помощью DriveApp. По-видимому, он делает еще один раунд, чтобы получить электронную почту владельца. Чтобы он выглядел лучше, используйте htmlService вместо uiApp. В обоих вы можете добавлять значки файлов, чтобы они выглядели лучше.

1

Относительно того, как он выглядит, даже если Зиг прав, когда он рекомендует службу HTML, все же можно получить интересные результаты с помощью UiApp.

Смотрите эту ссылку, например, где animated gif represents the link

Тем не менее, я должен признать, что это не самая простая вещь на земле :-), но он все еще работает!

Вот код, который я использовал, чтобы получить пример выше (полный код приложения, посмотрите на 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 минут ... нет решения, которое я знаю: -/

Смежные вопросы