Como obtener el id de un fichero con Google Apps Script


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();
}

Caso 3. Cómo obtener el id de un documento de Drive a través de su nombre
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;
}
El único problema de obtener el id de un fichero con este sistema es que o bien solo obtendremos el id del primer fichero con este nombre o bien tendremos que ponerle alguna condición adicional a la lógica ( fecha de creación, tipo de fichero, etc...)

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

No hay comentarios:

Publicar un comentario

Tal vez te interese