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

如何用Google Apps Script获取Dropbox文件的公开可访问链接?

解决Dropbox公开链接获取问题

要获取无需登录即可访问的Dropbox公开链接,需替换原代码中使用的sharing/get_file_metadata接口,改用sharing/create_shared_link_with_settings接口创建(或获取已有的)公开共享链接。以下是修改后的完整代码:

function listDropBoxFiles() {
  const accessToken = "###"; // 请设置你的访问令牌
  const path = "/Master Folder";

  let url = "https://api.dropboxapi.com/2/files/list_folder";
  let has_more = false;
  const option = {
    method: "post",
    headers: { authorization: "Bearer " + accessToken },
    contentType: "application/json",
    payload: JSON.stringify({ path, limit: 2000, recursive: true })
  };
  let values = [];
  var fileDetails = [];
  do {
    const res = UrlFetchApp.fetch(url, option);
    let obj = JSON.parse(res.getContentText());
    values = [...values, ...obj.entries];
    has_more = obj.has_more;
    if (has_more) {
      url = "https://api.dropboxapi.com/2/files/list_folder/continue";
      option.payload = JSON.stringify({ cursor: obj.cursor });
    }
  } while (has_more);


   for (var i = 0; i < values.length; i++) {
    var entry = values[i];
   
    // 检查是否为文件
    if (entry['.tag'] === 'file') {
       var fileUrl = getPublicFileUrl(accessToken, entry.id);
       fileDetails.push([
         entry.name,
         fileUrl,
         Utilities.formatDate(new Date(entry.client_modified), Session.getScriptTimeZone(), 'dd/MM/yyyy hh:mm a'),
         Utilities.formatDate(new Date(entry.server_modified), Session.getScriptTimeZone(), 'dd/MM/yyyy hh:mm a')
       ]);
    }
  }
  console.log(fileDetails);
  detailSheet.getRange(detailSheet.getLastRow()+1,1,fileDetails.length,fileDetails[0].length).setValues(fileDetails);
}

function getPublicFileUrl(accessToken, fileId) {
  const url = "https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings";
  const res = UrlFetchApp.fetch(url, {
    method: "post",
    headers: { authorization: "Bearer " + accessToken },
    contentType: "application/json",
    payload: JSON.stringify({
      file: fileId,
      settings: {
        visibility: "public", // 设置为公开访问
        allow_download: true // 允许下载(可选,根据需求调整)
      }
    })
  });
  const obj = JSON.parse(res.getContentText());
  // 返回公开共享链接
  return obj.url;
}

修改说明:

  1. 替换API接口:将获取链接的接口从sharing/get_file_metadata改为sharing/create_shared_link_with_settings,该接口专门用于创建或获取带权限设置的共享链接。
  2. 设置公开权限:在请求payload中添加settings参数,指定visibility: "public",确保生成的链接无需登录即可访问。
  3. 调整返回字段:从接口返回结果中提取url字段,而非原代码的preview_url,这个url就是公开可访问的共享链接。
  4. 权限要求:确保你的Dropbox访问令牌拥有sharing.write权限,否则无法创建公开共享链接。

注意事项:

  • 如果目标文件已存在公开共享链接,调用该接口会直接返回已有的链接,不会重复创建。
  • 若需强制生成新的链接,可以在payload中添加override_existing: true参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:33:21