En muchas ocasiones podemos necesitar el id de un fichero de Drive y a veces no está claro como obtenerlo. En este artículo te mostraré todas las maneras que hay para obtener el id de un fichero de Drive con Google Apps Script.
Caso 1: Cómo obtener el id de un fichero de Drive teniendo su url
No existe función que nos permita abrir un fichero de drive (genérico) a través de su url así que la única manera de conseguir la id es directamente sacandolo de la url.
El código lo tenéis a continuación:
function GetIdFromUrl(url) { return url.split("/")[5]; }
Caso 2: Cómo obtener el id de un spreadsheet a través de su url
Si nos interesa saber el id de un spreadsheet podriamos utilizar el código del caso 1, pero realmente podriamos hacer el código un poco más "limpio":
function GetIdFromSpreadsheet(url) { return SpreadsheetApp.openByUrl(url).getId(); }
Podríamos hacer lo mismo para el caso de documentos con un código casi idéntico:
function GetIdFromDocument(url) { return DocumentApp.openByUrl(url).getId(); }
Si necesitáis obtener el id de un documento de Drive del cual solo tenéis el nombre una forma fácil de hacerlo seria con el siguiente código:
function GetIdFromName(name) { var files = DriveApp.getFilesByName(name); if( files.hasNext() ) { return files.next().getId(); } return undefined; }
Caso 4. Cómo obtener el id de un documento de Drive a través de su nombre sabiendo que está en una carpeta en concreto
Una versión mejorada del punto 3 es buscar un documento por su nombre sabiendo que está en una carpeta en concreto. La idea es la misma, pero usando las funciones del folder en concreto donde estemos.
function GetIdFromNameInFolder(name,folder) { var files = folder.getFilesByName(name); if( files.hasNext() ) { return files.next().getId(); } return undefined; }
Caso 5. Cómo obtener el id de un documento de Drive sabiendo el nombre del fichero y de la carpeta que lo contiene
Básicamente esta opción es una pequeña mejora respecto al código anterior:
function GetIdFromFileNameAndFolderName(foldername,filename) { var folders = DriveApp.getFoldersByName(foldername); var folder = null; if( folders.hasNext() ) { folder = folders.next(); } if( folder != null ) { return GetIdFromNameInFolder(filename,folder); } return undefined; }
Se os ocurre algún otro caso en que sea necesario hacer un código diferente para obtener el id de un documento de Drive?
No vaciléis en hacerme llegar vuestras dudas
Nos vemos
P.D: Tal vez te interese hacer el paso contrario, como obtener el nombre de un fichero teniendo el id, con Google Apps Script
HOLA!
ResponderEliminarTengo el siguiente script en un archivo HCG:
function BuscarCarpetaEnDrive(nombrecarpeta)
{
var libro=SpreadsheetApp.getActive();
var carpetas=DriveApp.getFoldersByName(nombrecarpeta);
if(carpetas.Hasnext())
{
return("Carpeta "+nombrecarpeta+"< EXISTE!!>");
}
else
{
return("Carpeta: "+nombrecarpeta+"< NO EXISTE!!>");
}
}
###############
Celda A1="REGIONES" (texto)
Celda A2="=BuscarCarpetaEnDrive(A1)" (fórmula)
en la celda A2 ocurre el siguiente error:
Error
Exception: You do not have permission to call DriveApp.getFoldersByName.
Required permissions: (https://www.googleapis.com/auth/drive.readonly |ó https://www.googleapis.com/auth/drive)
(línea 4).
que debería hacer para resolver dicho error???
Muchas Gracias!!!
Victor
Hola teniendo el id de los ficheros de drive que los tengo en un columna de un spredsheet, como obtengo el nombre real del fichero? O sea el name? Gracias
ResponderEliminarHola Carina... algo como esto? https://www.tutorialesgoogleappscripts.com/2021/07/como-obtener-el-nombre-de-un-fichero-con-google-apps-script.html Ya me dirás como te ha ido, nos vemos!
EliminarHola, realice un formulario en el que las personas pueden subir archivos y esos archivos necesito moverlos a carpetas que se crean de manera automática (por cada persona), tengo los url respectivos en la hoja generada por el formulario
ResponderEliminarlas carpetas se crean al responder el formulario esta programado
Eliminar