use*_*847 15 file delete-file google-apps-script google-drive-api
如何编写删除文件的Google Apps脚本?
这找到文件:
var ExistingFiles = DocsList.find(fileName);
Run Code Online (Sandbox Code Playgroud)
但DocsList.deleteFile删除文件不存在.
有没有办法将这些文件移动到另一个文件夹或垃圾箱?
我要考虑的另一种解决方法是能够覆盖具有相同名称的现有文件.
目前,当我想创建一个已在MyDrive中使用的名称的文件时,它会创建一个具有相同名称的第二个文件.我想保留1个文件(新文件保留,旧文件丢失).
Ala*_*lls 15
该DocsList服务现已弃用.这个答案使用了较新的DriveApp服务.
有一种方法可以删除文件而不将其发送到垃圾箱.您可能希望删除文件而不将其发送到废纸篓,以避免以后清空废纸篓文件夹.高级驱动器服务有一种remove方法可以删除文件而不将其发送到垃圾箱文件夹.高级服务具有与API相同的功能,无需进行HTTPS GET或POST请求.
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);
};
};
Run Code Online (Sandbox Code Playgroud)
这会将DriveApp服务和Drive API结合使用,以删除文件而不将其发送到垃圾箱.Drive API方法.remove(id)需要文件ID.如果文件ID不可用,但文件名是,则可以先按名称查找文件,然后获取文件ID.
要使用DriveAPI,您需要通过Resources,Advanced Google Services菜单添加它.将Drive API设置为ON. 和确保该驱动器API在您的谷歌开发者控制台打开.如果它没有在两个地方打开,它将无法使用.
此代码使用DocsList现已弃用的Class.
试试这个 :
function test(){
deleteDocByName('Name-of-the-file-to-delete')
}
function deleteDocByName(fileName){
var docs=DocsList.find(fileName)
for(n=0;n<docs.length;++n){
if(docs[n].getName() == fileName){
var ID = docs[n].getId()
DocsList.getFileById(ID).setTrashed(true)
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为你可以有许多同名的文档,我使用for循环来获取文档数组中的所有文档,并在必要时逐个删除它们.
我使用了一个带有文件名作为参数的函数来简化它在脚本中的使用,使用测试函数来尝试它.
注意:请注意,具有此名称的所有文件都将被删除(并且可以恢复;-)
关于保留最新版本和删除旧版本的问题的最后一部分,它是可行的(通过阅读上次访问的日期和时间),但我认为在创建新文件之前删除旧文件是一个更好的主意.同名......更合乎逻辑,更安全!
现在,如果文件是电子表格,doc等,您可以使用以下内容:
DriveApp.getFileById(spreadsheet.getId()).setTrashed(true);
Run Code Online (Sandbox Code Playgroud)
或者如果您已经拥有该文件而不是电子表格,文档等,您可以使用:
file.setTrashed(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30008 次 |
| 最近记录: |