Desarrollar una aplicación que procese currículos enviados a través de Google Forms y los almacene en Google Drive puede presentar ciertos desafíos, especialmente en lo que respecta al manejo de permisos y la eficiencia en el acceso a los archivos. Este artículo aborda una solución a estos problemas utilizando la API de Google Picker y el ámbito drive.file
.
Desafíos
Al utilizar el ámbito drive.file
, la aplicación solo puede acceder a archivos que han sido “abiertos” explícitamente por el usuario, lo que resulta complicado cuando se manejan múltiples currículos. Otorgar acceso manual a cada archivo no es práctico ni eficiente.
Solución
La nueva función de la API de Picker, setFileIds(fileIds)
, permite navegar previamente a IDs de archivo específicos. La cuestión es: ¿puede la aplicación, utilizando esta función con el ámbito drive.file
, tratar automáticamente los archivos seleccionados como si hubieran sido “abiertos”? La respuesta a esto es clave para optimizar el procesamiento de los datos de los currículos.
Implementación
La aplicación se desarrollará utilizando el siguiente flujo:
- Carga de bibliotecas de Google: Se inicia la carga de las bibliotecas necesarias para interactuar con Google Drive y la API de Picker.
- Inicialización del Picker: Se configura la API de Picker, que permite a los usuarios seleccionar archivos desde su Google Drive.
- Gestión de selección de archivos: Cuando un reclutador selecciona un archivo, la aplicación debe capturar el ID del archivo y, con el token de acceso obtenido, proceder a acceder al contenido del archivo.
Código de Ejemplo
A continuación, se presenta un fragmento del código HTML y JavaScript necesario para implementar esta funcionalidad:
<button onclick="handleFileAccess()" id="pickButton" disabled>Select File from Google Drive</button>
<button onclick="openInDrive()" id="openInDriveBtn" style="display: none;">Open in Drive</button>
<button onclick="fetchContent()" id="fetchContentBtn" style="display: none;">Fetch Content</button>
<div id="result"></div>
<script>
const CLIENT_ID = '';
const API_KEY = '';
const SCOPE = 'https://www.googleapis.com/auth/drive.file';
let pickerInitialized = false;
let tokenClient;
let accessToken = null;
let selectedFile = null;
async function handleFileAccess() {
if (!pickerInitialized) {
showError('Picker not initialized yet.');
return;
}
if (!accessToken) {
tokenClient.requestAccessToken({ prompt: 'consent' });
} else {
await showPicker();
}
}
function showPicker() {
const picker = new google.picker.PickerBuilder()
.addView(google.picker.ViewId.DOCS)
.setOAuthToken(accessToken)
.setDeveloperKey(API_KEY)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
function pickerCallback(data) {
if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
selectedFile = data[google.picker.Response.DOCUMENTS][0];
fetchContent();
} else {
showError('Selection cancelled.');
}
}
async function fetchContent() {
if (!selectedFile) {
showError('No file selected.');
return;
}
const response = await fetch(`https://www.googleapis.com/drive/v3/files/${selectedFile.id}?alt=media`, {
headers: { 'Authorization': `Bearer ${accessToken}` }
});
const content = await response.text();
document.getElementById('result').innerText = content;
}
function showError(message) {
document.getElementById('result').innerHTML = `<div class="error">Error: ${message}</div>`;
}
</script>
Consideraciones Finales
Es fundamental asegurarse de que el manejo de permisos y el acceso a los archivos cumplan con las directrices de seguridad y privacidad de Google. Implementar la funcionalidad descrita no solo mejora la eficiencia de la aplicación, sino que también optimiza la experiencia del usuario al permitirles acceder a los archivos de manera más directa y eficiente.
Con el uso correcto de la API Google Picker y el ámbito drive.file
, se puede gestionar eficazmente el acceso a múltiples currículos, facilitando así el trabajo de los reclutadores.