file - 如何删除 Google 云端硬盘中的文件?

标签 file google-apps-script google-drive-api delete-file

如何编写删除文件的 Google Apps 脚本?

这会找到文件:

var ExistingFiles = DocsList.find(fileName);

但是 DocsList.deleteFile 不存在,无法删除文件。

有没有办法将这些文件移动到另一个文件夹或垃圾箱?

我考虑的另一个解决方法是能够覆盖具有相同名称的现有文件。

目前,当我想创建一个名称已在 MyDrive 中使用的文件时,它会创建第二个同名文件。我想保留 1 个文件(新的保留,旧的丢失)。

最佳答案

有 3 种服务可用于删除文件。

  • DriveApp - 内置于 Apps 脚本
  • 高级驱动器服务 - 内置于 Apps 脚本,但必须启用。比 DriveApp 具有更多功能
  • Google Drive API - 不是内置于 Apps 脚本中,但可以通过 Drive REST API 与 UrlFetchApp.fetch(url,options) 一起从 Apps 脚本中使用

DocsList 服务现已弃用。

高级驱动器服务可用于删除文件而不将其发送到垃圾箱。认真考虑无法检索已删除文件的风险。 Advanced Drive Service 有一个 remove 方法,可以删除文件而不将其发送到垃圾文件夹。高级服务具有许多与 API 相同的功能,无需发出 HTTPS GET 或 POST 请求,也不需要 OAuth 库。

function delteFile(myFileName) {
  var allFiles, idToDLET, myFolder, rtrnFromDLET, thisFile;

  myFolder = DriveApp.getFolderById('Put_The_Folder_ID_Here');

  allFiles = myFolder.getFilesByName(myFileName);

  while (allFiles.hasNext()) {//If there is another element in the iterator
    thisFile = allFiles.next();
    idToDLET = thisFile.getId();
    //Logger.log('idToDLET: ' + idToDLET);

    rtrnFromDLET = Drive.Files.remove(idToDLET);
  };
};

这结合了 DriveApp 服务和 Drive API 来删除文件而不将其发送到垃圾箱。 Drive API 方法 .remove(id) 需要文件 ID。如果没有文件ID,但有文件名,则可以先通过名称查找文件,然后获取文件ID。

为了使用 DriveAPI,您需要通过资源高级 Google 服务菜单添加它。将 Drive API 设置为开启并且确保您的 Google Cloud Platform 中已启用 Drive API。如果两个位置均未启用该功能,则该功能将不可用。

关于file - 如何删除 Google 云端硬盘中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14241237/

相关文章:

file - Emacs:将缓冲区写入新文件,但保持此文件打开

machine-learning - 将单个大型 Google Drive 存档导入到共享的 Google Colab 项目中

android - 如何在android中下载谷歌驱动器文件

database - 逻辑 : Best way to sample & count bytes of a 100MB+ file

java - 删除文本文件中的特定行

javascript - 如何确保 OAuth2 身份验证成功后重新发送原始 Google Chat 消息?

google-apps-script - 迷你图堆叠条形颜色选项仅允许两种颜色变化?

android - Google Play 游戏服务和 Google Drive API 已弃用

javascript - 在 Node ,js( typescript )中打开文件对话框

javascript - 如何让for循环脚本更加高效?