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

如何用Google Apps Script列出Dropbox文件夹及子文件夹的文件名与URL?

你找到的这段dbxFileUpload代码是用来将Dropbox文件上传到Google Drive的,和你要「列出Dropbox文件及子文件夹名称、URL」的需求不匹配,下面给你一套适合新手的Google Apps Script实现方案:

步骤1:准备工作
  • 确保你已经有Dropbox App的App Key和App Secret(你已创建完成,先妥善保存)
  • 在Google Apps Script编辑器中添加OAuth2库:
    1. 点击编辑器菜单「资源」→「库」
    2. 输入库ID:1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,点击「添加」
    3. 选择最新版本,点击「保存」
步骤2:编写授权函数获取访问令牌
// 替换成你的Dropbox App Key和Secret
const DBX_APP_KEY = "你的App Key";
const DBX_APP_SECRET = "你的App Secret";

function getDropboxService() {
  return OAuth2.createService('Dropbox')
    .setAuthorizationBaseUrl('https://www.dropbox.com/oauth2/authorize')
    .setTokenUrl('https://api.dropboxapi.com/oauth2/token')
    .setClientId(DBX_APP_KEY)
    .setClientSecret(DBX_APP_SECRET)
    .setCallbackFunction('authCallback')
    .setPropertyStore(PropertiesService.getUserProperties())
    .setScope('files.content.read sharing.read'); // 权限:读取文件内容、读取分享链接
}

function authCallback(request) {
  const service = getDropboxService();
  const isAuthorized = service.handleCallback(request);
  return HtmlService.createHtmlOutput(isAuthorized ? '授权成功!请关闭此页面返回脚本编辑器' : '授权失败');
}

function authorizeDropbox() {
  const service = getDropboxService();
  if (!service.hasAccess()) {
    const authorizationUrl = service.getAuthorizationUrl();
    Logger.log('请访问以下链接授权:' + authorizationUrl);
    SpreadsheetApp.getUi().alert('请点击以下链接授权:\n' + authorizationUrl);
  } else {
    Logger.log('已授权');
  }
}
步骤3:编写递归遍历Dropbox文件的函数

下面的函数会递归遍历指定Dropbox文件夹(默认根目录),收集所有文件的名称和临时访问URL:

function listDropboxFiles(folderPath = '') {
  const service = getDropboxService();
  if (!service.hasAccess()) {
    throw new Error('未授权,请先运行authorizeDropbox函数');
  }

  const allFiles = [];
  let cursor = null;

  do {
    // 调用Dropbox API获取文件列表
    const apiUrl = cursor 
      ? 'https://api.dropboxapi.com/2/files/list_folder/continue'
      : 'https://api.dropboxapi.com/2/files/list_folder';
    
    const payload = cursor 
      ? { cursor: cursor }
      : { path: folderPath, recursive: true, include_media_info: false, include_deleted: false };

    const response = UrlFetchApp.fetch(apiUrl, {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer ' + service.getAccessToken(),
        'Content-Type': 'application/json'
      },
      payload: JSON.stringify(payload)
    });

    const result = JSON.parse(response.getContentText());
    cursor = result.cursor;

    // 处理当前页的文件
    result.entries.forEach(entry => {
      if (entry['.tag'] === 'file') {
        // 获取文件临时访问URL
        const linkResponse = UrlFetchApp.fetch('https://api.dropboxapi.com/2/files/get_temporary_link', {
          method: 'POST',
          headers: {
            'Authorization': 'Bearer ' + service.getAccessToken(),
            'Content-Type': 'application/json'
          },
          payload: JSON.stringify({ path: entry.path_lower })
        });
        const linkData = JSON.parse(linkResponse.getContentText());
        
        allFiles.push({
          name: entry.name,
          path: entry.path_lower,
          url: linkData.link
        });
      }
    });

  } while (!result.has_more);

  // 输出结果到日志
  Logger.log('共找到' + allFiles.length + '个文件:');
  allFiles.forEach(file => {
    Logger.log(`名称:${file.name},URL:${file.url}`);
  });

  // 可选:写入到当前Google表格
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();
  sheet.appendRow(['文件名', '文件路径', '访问URL']);
  allFiles.forEach(file => {
    sheet.appendRow([file.name, file.path, file.url]);
  });

  return allFiles;
}
步骤4:运行流程
  1. 替换代码中的DBX_APP_KEY和DBX_APP_SECRET为你的实际值
  2. 运行authorizeDropbox函数,按照提示完成Dropbox授权
  3. 运行listDropboxFiles函数,默认遍历根目录;如果要指定文件夹,传入路径,比如listDropboxFiles('/我的文件夹')
  4. 查看日志(编辑器菜单「查看」→「日志」)或者当前表格内容,就能看到所有文件的名称和URL
补充说明
  • 代码中使用的是临时访问URL,有效期4小时;如果需要永久分享链接,可以替换get_temporary_link为sharing/create_shared_link_with_settings API,同时调整权限范围
  • 递归遍历会处理所有子文件夹,若文件夹内容较多,注意Google Apps Script的6分钟超时限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:18:11