file - trucos - Guión de aplicaciones de Google: ¿cómo eliminar un archivo en Google Drive?
personalizar google drive (4)
Aunque el servicio DocsList ahora está en desuso, a partir de las referencias de la Carpeta de clase, el método establecido sigue siendo válido:
https://developers.google.com/apps-script/reference/drive/folder#settrashedtrashed
Entonces debería funcionar simplemente esto:
ExistingFiles.settrashed(true);
¿Cómo escribo un Google Apps Script que elimina los archivos creados en la unidad Root? Puedo encontrarlos usando:
var ExistingFiles=DocsList.find(fileName);
Pero no sé cómo eliminarlos por script. Sé cómo usar DocsList.createFile
, pero DocsList.deleteFile
no existe para resolver mi problema.
¿Hay alguna forma de mover esos archivos a otra carpeta o a la Papelera?
La otra solución que consideraría es poder anular un archivo existente con el mismo nombre. Actualmente, cuando quiero crear un archivo con un nombre ya usado en MyDrive, crea un segundo archivo con el mismo nombre. Me gustaría guardar 1 archivo (el nuevo se guarda y el anterior se pierde).
Ahora puede usar lo siguiente si el archivo es como una hoja de cálculo, un doc, etc.
DriveApp.getFileById(spreadsheet.getId()).setTrashed(true);
o si ya tiene el archivo en lugar de una hoja de cálculo, un documento, etc., puede usar:
file.setTrashed(true);
Este código usa la clase DocsList
que ahora está en desuso.
prueba esto :
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)
}
}
}
ya que puede tener muchos documentos con el mismo nombre, utilicé un ciclo for para obtener todos los documentos del conjunto de documentos y eliminarlos uno por uno si es necesario.
Utilicé una función con el nombre de archivo como parámetro para simplificar su uso en un script, use la función de prueba para probarlo.
Nota: tenga en cuenta que todos los archivos con este nombre serán destruidos (y recuperables ;-)
Acerca de la última parte de su pregunta sobre cómo conservar la más reciente y eliminar la anterior, sería factible (leyendo la última fecha y hora de acceso), pero creo que es una mejor idea eliminar el archivo anterior antes de crear uno nuevo. con el mismo nombre ... ¡mucho más lógico y seguro!
El servicio DocsList
ahora está en desuso. Esta respuesta usa el servicio DriveApp
más DriveApp
.
Hay otra forma de eliminar un archivo sin enviarlo a la papelera, si no desea limpiar la papelera más tarde. El servicio Advanced Drive Service de Apps Script tiene un método de remove
que no envía el archivo a la papelera.
var eachFile, idToDLET, myFolder, rtrnFromDLET, thisFile;
myFolder = DriveApp.getFolderById(''Put_The_Folder_ID_Here'');
thisFile = myFolder.getFilesByName(myFileName);
while (thisFile.hasNext()) {//If there is another element in the iterator
eachFile = thisFile.next();
idToDLET = eachFile.getId();
//Logger.log(''idToDLET: '' + idToDLET);
rtrnFromDLET = Drive.Files.remove(idToDLET);
};
Esto combina el servicio de DriveApp y la API de Drive para eliminar el archivo sin enviarlo a la papelera. El método de la API de Drive .remove(id)
necesita la identificación del archivo. Si el ID del archivo no está disponible, pero el nombre del archivo es, entonces el archivo primero se puede buscar por nombre y luego obtener el ID del archivo.
Para utilizar DriveAPI, debe agregarlo a través del menú Recursos , Servicios avanzados de Google . Establezca Drive API en ON . Y asegúrese de que Drive API esté activada en Google Developers Console. Si no está encendido en AMBOS lugares, no estará disponible.