2015-05-07 167 views
3

我製作了一個包含大量Google Drive文件夾的Google Site。 每當我使用Google網站搜索功能進行搜索時,我只能找到屬於Google網站的單詞。因此,Google雲端硬盤文件夾不包含在搜索結果中。使用Apps腳本從Google Site搜索Google Drive文件夾

反正I was looking on the web and I came across this piece of code:

function doGet(e) { 
    var results = DriveApp.getFolderById('File ID').searchFiles('fullText contains "' + e.parameter.q + '"'); 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 

    while(results.hasNext()) { 
    var file = results.next(); 
    panel.add(app.createAnchor(file.getName(), file.getUrl())); 
    } 

    var scrollPanel = app.createScrollPanel(panel).setHeight(800); 
    app.add(scrollPanel); 
    return app; 
} 

我能得到這個腳本,並在谷歌網站使用谷歌Search Appliance的運行。但是,每次我搜索時,都會得到一個TypeError。是否有人能夠更正上面的腳本或知道一段代碼,這些代碼將允許我從Google Site搜索Google雲端硬盤文件夾?任何幫助將不勝感激

+0

中的index.html,並在視圖菜單下,選擇執行紀錄。在日誌的底部,查找一條消息,指出腳本失敗,並在哪一行。如果你能找出代碼失敗的代碼,這將有所幫助。 –

+0

嗨,我實現了腳本作爲一個Web應用程序,並擺脫了TypeError ...但是,當我執行腳本(通過搜索:'Blogger'[在此網站上](https:// sites.google.com/a/sgmeulebekepittem.be/testminerva/),它向我展示了一個空白頁面,它可能是一些非常愚蠢的事情,但我無法實現它的功能 –

+0

也許在代碼中加入一些錯誤處理可能會有所幫助;像一個'try,catch'塊 –

回答

0

這裏是一些工作代碼搜索子文件夾以及指定的文件夾請注意,如果你正在尋找一個大目錄這需要一段時間運行,並顯示爲空白值得添加一些也希望這可以幫助別人,隨時糾正任何錯誤或不良行爲代碼。

/* adapted origional code and code from here: http://qiita.com/atsaki/items/60dbdfe5ab5133a5f875 */ 
    function doGet(e) { 
    var results = getDriveFiles(DriveApp.getFolderById('File Id'), e.parameter.q); 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 
    for(var x=0; x<results.length; x++){ 
    panel.add(app.createAnchor(results[x].name, results[x].URL)); 
    } 
    var scrollPanel = app.createScrollPanel(panel).setHeight(200); 
    app.add(scrollPanel); 
    return app; 
} 
function getDriveFiles(folder,search) { 
    var files = []; 
    var fileIt = folder.searchFiles('fullText contains "' + search + '"');; 
    while (fileIt.hasNext()) { 
     var f = fileIt.next(); 
     files.push({id: f.getId(), name: f.getName(), URL: f.getUrl()}); 
    } 

    // Get all the sub-folders and iterate 
    var folderIt = folder.getFolders(); 
    while(folderIt.hasNext()) { 
     fs = getDriveFiles(folderIt.next(),search); 
     for (var i = 0; i < fs.length; i++) { 
      files.push(fs[i]); 
     } 
    } 

    return files; 
} 
0

正在嘗試做同樣的事情,並通過谷歌發現這篇文章。在那裏不是很多,所以我想添加我發現的東西。馬特的解決方案工作,除了UiApp以來已經貶值。下面是同樣的事情沒有使用UiApp與一些jQuery和一個tablesorter我的建議同事。希望其他人可以使用它,解決他們發現的任何問題,並加強一些。

// This code is designed to list files in a google drive folder and output the results as a table. 
function doGet(e) { 
    var gotResults = getDriveFiles(DriveApp.getFolderById('File ID'), e.parameter.q); 

var output = HtmlService.createTemplateFromFile('index.html'); 
output.results = gotResults; 
output.query = e.parameter.q; 

    return output.evaluate(); 
} 
function getDriveFiles(folder,search) { 
    var files = []; 
    var fileIt = folder.searchFiles('fullText contains "' + search + '"');; 
    while (fileIt.hasNext()) { 
    var f = fileIt.next(); 
    files.push({id: f.getId(), name: f.getName(), URL: f.getUrl(), lastupdate: f.getLastUpdated(), MIME: f.getMimeType(), owner: f.getOwner(), parents: f.getParents()}); 
    } 

    // Get all the sub-folders and iterate 
    var folderIt = folder.getFolders(); 
    while(folderIt.hasNext()) { 
    fs = getDriveFiles(folderIt.next(),search); 
    for (var i = 0; i < fs.length; i++) { 
     files.push(fs[i]); 
    } 
    } 
    return files; 
} 

這裏是後你得到的類型錯誤,進入腳本編輯器爲這個

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_blank"> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.26.2/css/theme.blue.min.css"> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.26.2/js/jquery.tablesorter.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.26.2/js/jquery.tablesorter.widgets.min.js"></script> 
    </head> 
    <body> 
    <b>Search:</b> <?= query ?> 
    <table> 
      <thead> 
      <tr> 
      <th>File</th> 
      <th>Directory</th> 
      <th>Owner</th> 
      <th>Last Updated</th> 
      <th>File Type</th> 
      </tr> 
      </thead> 
      <tbody> 
      <? 
      for(var x=0; x<results.length; x++){ 
      ?><tr> 
      <td><a href="<?= results[x].URL ?>" target="_blank"><?= results[x].name ?></a></td> 
      <td> <? while (results[x].parents.hasNext()) { ?> 
       <?= results[x].parents.next().getName() ?>/ 
      <? } ?> </td> 
      <td><?= results[x].owner.getName() ?></td> 
      <td><?= Utilities.formatDate(results[x].lastupdate, "EDT", "yyyy-MM-dd h:mm a ") ?></td> 
      <td><?= results[x].MIME ?></td> 
      </tr> 
      <? } ?> 
      </tbody> 
    </table> 

    <script> 
     $(document).ready(function() { 
      $("table").tablesorter({ 
      theme: 'blue', 
      widgets: ["uitheme","zebra"], 
      widgetOptions : { 
       zebra : ["even", "odd"],   
      },     
      }); 
     });  
    </script> 
    </body> 
</html> 
相關問題