使用 Google Apps 脚本列出 Dropbox 文件夹中文件的名称和 URL

问题描述 投票:0回答:1

我正在尝试列出 Dropbox 文件夹和子文件夹中所有文件的名称和 URL。我发现Cooper在类似的question中提出了以下代码片段:

function dbxFileUpload(files) {
  var fldr = DriveApp.getFolderById(getGlobal('GPSTracksFolderId'));
  var fileBlob=UrlFetchApp.fetch(files[0].link).getBlob();
  var file=fldr.createFile(fileBlob);
  var fi=formatFileName(file);
  var fileInfo={'name':fi.getName(),'type':fileBlob.getContentType(), 'size':fileBlob.getBytes(), 'folder':fldr.getName(), 'id':fi.getId()};
  return fileInfo;
}

我不确定如何在我的情况下使用此代码片段。可以提供解决方案的其他来源是不同语言的,即 Php、Android。

来源1

来源2

来源3

来源4

我已经创建了一个提供

App Key
App Secret
的 Dropbox 应用程序,但由于我的初学者技能,我不确定如何使用 Google Apps 脚本使其工作。任何指导将不胜感激。

google-apps-script google-sheets dropbox
1个回答
1
投票

我相信您的目标如下。

  • 您想要使用 Dropbox API 和 Google Apps 脚本检索 Dropbox 的文件列表。

为了使用 Dropbox API,需要使用访问令牌。在此答案中,假设您已经拥有有效的访问令牌。请注意这一点。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

在此示例脚本中,将从您的保管箱中检索文件和文件夹列表。

function myFunction() {
  const accessToken = "###"; // Please set your access token.
  const path = "";

  const url = "https://api.dropboxapi.com/2/files/list_folder";
  const res = UrlFetchApp.fetch(url, {
    method: "post",
    headers: { authorization: "Bearer " + accessToken },
    contentType: "application/json",
    payload: JSON.stringify({ path, limit: 2000, recursive: true })
  });
  const obj = JSON.parse(res.getContentText());
  console.log(obj);
}
  • 运行该脚本后,得到以下结果。在这种情况下,子文件夹下的文件和文件夹都包含在内。

    {
      "entries": [
        {".tag": "###", "name": "###", "path_lower": "###", "path_display": "###", "id": "id:###"},
        ,
        ,
        ,
      ],
      "cursor": "###",
      "has_more": false
    }
    
  • 如果要检索子文件夹下的文件,请将

    const path = "";
    设置为
    const path = "/sampleFolderName";
    。如果是
    const path = "";
    ,则会检索 Dropbox 中的所有文件和文件夹。

  • 如果

    has_more
    true
    ,请使用list_folder/继续检索下一个列表。

  • 请在“Dropbox API 的list_folder”查看更多相关信息。

注:

  • 在此答案中,假设您已经拥有使用此 API 的有效访问令牌。请注意这一点。如果您想了解获取access token的方法,请查看官方文档。 Ref1Ref2
  • 的“授权”部分

参考资料:

补充:

关于文件URL,似乎

{fileId}
https://www.dropbox.com/s/{fileId}/{fileName}?raw=1
与文件ID不同。因此,我又准备了一个示例脚本来检索文件 URL。我认为下面的脚本可以检索它。

function getSharedLink() {
  const accessToken = "###"; // Please set your access token.
  const fileId = "###"; // Please set file ID.

  const url = "https://api.dropboxapi.com/2/sharing/get_file_metadata";
  const res = UrlFetchApp.fetch(url, {
    method: "post",
    headers: { authorization: "Bearer " + accessToken },
    contentType: "application/json",
    payload: JSON.stringify({ file: fileId })
  });
  const obj = JSON.parse(res.getContentText());
  const sharedLink = obj.preview_url;

  console.log(sharedLink);
}
© www.soinside.com 2019 - 2024. All rights reserved.