You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Colab中通过Drive API获取超1000个Drive文件列表

Google Drive API分页批量获取视频文件名到表格的解决方案

核心逻辑

Drive API的files().list接口单次最多返回1000条数据,当文件总数超过这个数时,接口会返回nextPageToken标记下一页数据的位置。我们只需要循环调用接口,每次带上上一页的pageToken,直到没有nextPageToken返回,就能拿到所有文件。

修改后的代码示例(Google Apps Script)

function exportVideoNamesToSheet() {
  // 替换成你的目标文件夹ID和工作表名称
  const targetFolderId = "xxxxxxxxx";
  const targetSheetName = "视频列表";
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheetName);
  sheet.clearContents(); // 清空表格原有内容
  
  let allFiles = [];
  let pageToken = null;

  // 循环分页获取所有视频文件
  do {
    const apiResponse = Drive.Files.list({
      q: `'${targetFolderId}' in parents and mimeType contains 'video/'`, // 只筛选视频文件
      pageSize: 1000, // API允许的最大单次返回量
      pageToken: pageToken,
      orderBy: "createdTime asc", // 按创建时间升序排列,可改modifiedTime
      fields: "nextPageToken, files(name)" // 只请求必要字段,减少数据传输
    });

    allFiles = allFiles.concat(apiResponse.files);
    pageToken = apiResponse.nextPageToken;
  } while (pageToken);

  // 将文件名批量写入A列
  const nameList = allFiles.map(file => [file.name]);
  if (nameList.length > 0) {
    sheet.getRange(1, 1, nameList.length, 1).setValues(nameList);
  }
}

关键细节说明

  • 分页循环:用do-while确保至少执行一次请求,后续每次请求都带上上一页的pageToken,直到接口不再返回该标记,说明所有文件已获取完成。
  • 字段精简:通过fields参数只获取nextPageToken和文件名,避免请求不必要的文件信息,提升接口响应速度。
  • 排序控制:orderBy参数指定按时间戳排序,可选createdTime(创建时间)或modifiedTime(修改时间),后缀asc是升序,desc是降序。
  • 异常处理(可选):如果需要处理API配额耗尽、网络异常等情况,可以在循环内添加try-catch块,比如:
    try {
      const apiResponse = Drive.Files.list({/* 参数 */});
      // 处理响应
    } catch (err) {
      console.log(`请求出错: ${err.message}`);
      break;
    }
    

内容的提问来源于stack exchange,提问作者element159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:20:29