更新时间:2023-02-14 14:19:45
Was trying to do the same thing and found this post via google. Wasn't a lot out there so thought I'd add what I found. Matt's solution worked except UiApp has since be depreciated. Here is the same thing done not using UiApp with some jquery and a tablesorter a colleague of my suggested. Hoping others can use it,fix any issue they find, and enhance it some more.
// 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;
}
Here is the index.html for this
<!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>