Google Drive - 如何列出指定文件夹中的所有文件

Ric*_*son 5 php xampp google-api google-apps-script google-drive-api

嗨,我被这种情况困在这里,我尝试了多种不同的方法,但我无法得到我想要的。

情况:我在谷歌驱动器上托管的文件夹中有大量文件。例如,用于报告的单个客户端文件夹有 2000-10000 个文件(这只会变得更大),我希望能够列出这些带有标题和文件 ID 以及父文件夹 ID 的文件,以便我可以创建文件的直接链接. 根据我的理解,我可以使用 google drive 来做到这一点:drive-api-client-php 我已经设置了一个项目并有一个客户端 ID 和客户端密码,我已经下载了 subversion composer 和 google-api 以及 drive-api-client- php 并使用 XAMPP

到目前为止我所做的:我已经浏览了 googles 文档并观看了他们提供的教程视频。我已经尝试了他们在那里的网页上提供的谷歌示例,这是我需要的开始。这将列出文件夹中的文件,其中包含 ID 和标题或您选择的任何字段 - 这里的两个问题是您无法指定您想要结果的文件夹,并且结果的最大数量限制为 1000。我在需要10,000。

我也看了一些谷歌的Apps脚本在这里,这似乎是VBA在Excel中拉文件ID和标题等使用,但是这也仅限于结果的最大数量,然后超时问题。这是我想要的确切类型的结果,只是没有限制。

我的问题是:在谷歌驱动器的指定文件夹中列出 10,000 个带有标题的文件 ID 的选项是什么? . 我对此很灵活,我可以在提取数据后处理数据,首先获取数据对我来说是关键。期待您的回复,非常感谢。我希望这足够清楚并且有道理。

Ric*_*son 2

这就是我想到的,感谢上面代码和我找到的其他一些代码的帮助,将两者放在一起,它就满足了我的需要。它可能对其他人有用。

谢谢

function listFilesInFolder() {
var MAX_FILES = 2000; //use a safe value, don't be greedy
var id = 'FOLDER_ID_HERE'; 
var scriptProperties = PropertiesService.getScriptProperties();
var lastExecution = scriptProperties.getProperty('LAST_EXECUTION');
var sheet = SpreadsheetApp.getActiveSheet();
var data;
if( lastExecution === null )
lastExecution = '';

var continuationToken = scriptProperties.getProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN');
  var iterator = continuationToken == null ?
  DriveApp.getFolderById(id).getFiles() : DriveApp.continueFileIterator(continuationToken);


 try { 
   for( var i = 0; i < MAX_FILES && iterator.hasNext(); ++i ) {
   var file = iterator.next();
   var dateCreated = formatDate(file.getDateCreated());
    if(dateCreated > lastExecution)
     processFile(file);
    data = [
       i,
       file.getName(),
       file.getId()
      ];        

    sheet.appendRow(data);
}
} catch(err) {
 Logger.log(err);
}

if( iterator.hasNext() ) {
 scriptProperties.setProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN', iterator.getContinuationToken());
 } else { // Finished processing files so delete continuation token
 scriptProperties.deleteProperty('IMPORT_ALL_FILES_CONTINUATION_TOKEN');
 scriptProperties.setProperty('LAST_EXECUTION', formatDate(new Date()));
 }
 }

function formatDate(date) { return Utilities.formatDate(date, "GMT", "yyyy-MM-dd HH:mm:ss"); }

function processFile(file) {
var id = file.getId();
var name = file.getName();
//your processing...
Logger.log(name);

}
Run Code Online (Sandbox Code Playgroud)