如何编写删除文件的 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/