Hoy vamos a crear un Web App para gestionar inventarios, específicamente para registrar salidas de inventario. La ventaja del Web App es que permite ingresar datos sin necesidad de acceder directamente a Google Sheets, lo cual mejora la seguridad y flexibilidad del sistema.
Video
Paso 1: Estructuración del Google Sheet
Hojas de Trabajo
- Productos: Contendrá la lista de productos con sus referencias, descripciones, categorías y precios.
- Entradas: Para registrar las entradas de inventario.
- Salidas: Para registrar las salidas de inventario.
- Inventario: Para calcular el inventario actual.
Configuración de la Hoja de Productos
- Columnas: Referencia, Descripción, Categoría, Precio.
- Ejemplo de productos (usado fuera de cámaras):
Referencia | Descripción | Categoría | Precio
-----------------------------------------------------
001 | Bolígrafo Azul | Papelería | 0.50
002 | Bolígrafo Negro | Papelería | 0.50
003 | Cuaderno | Papelería | 2.00
004 | Rollo de Papel | Papelería | 3.00
005 | Resma de Papel | Papelería | 5.00
Paso 2: Creación del Web App
Configuración Inicial
- Crear un nuevo Google Sheet y añadir las hojas mencionadas.
- Abrir el editor de Apps Script:
Extensiones > Apps Script.
Código del Script
- Crear el archivo HTML:
<!DOCTYPE html>
<html>
<head>
<title>Inventarios Papelería JSG</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Gestión de Inventarios</h1>
<form>
<div class="form-group">
<label for="ref">Referencia</label>
<input type="text" class="form-control" id="ref">
</div>
<div class="form-group">
<label for="cantidad">Cantidad</label>
<input type="number" class="form-control" id="cantidad">
</div>
<button type="button" class="btn btn-primary" onclick="guardarDatos()">Guardar</button>
</form>
</div>
<script>
function guardarDatos() {
var ref = document.getElementById('ref').value;
var cantidad = document.getElementById('cantidad').value;
google.script.run.escribirEnSheets({ ref: ref, cantidad: cantidad });
document.getElementById('ref').value = '';
document.getElementById('cantidad').value = '';
}
</script>
</body>
</html>
- Crear la función
doGeten el archivoCode.gs:
function doGet() {
return HtmlService.createHtmlOutputFromFile('principal');
}
- Crear la función
escribirEnSheetsen el archivoCode.gs:
function escribirEnSheets(data) {
var libro = SpreadsheetApp.getActiveSpreadsheet();
var hojaSalidas = libro.getSheetByName('Salidas');
var hojaProductos = libro.getSheetByName('Productos');
var ref = data.ref;
var cantidad = data.cantidad;
var datosProductos = hojaProductos.getDataRange().getValues();
var listaProductos = datosProductos.map(function(fila) { return fila[0]; });
var indice = listaProductos.indexOf(ref);
if (indice !== -1) {
var descripcion = datosProductos[indice][1];
var precio = datosProductos[indice][3];
var total = precio * cantidad;
var fecha = new Date();
hojaSalidas.appendRow([ref, descripcion, precio, cantidad, total, fecha]);
}
}
Implementación del Web App
- Implementar el Web App:
- En el editor de Apps Script, selecciona
Publicar > Implementar como aplicación web. - Configura
Ejecutar la aplicación comotú mismo. - Configura
Quién tiene accesoa cualquiera (o solo a usuarios específicos). - Guarda e implementa.
Paso 3: Verificación y Prueba del Web App
- Acceder al Web App usando la URL proporcionada tras la implementación.
- Ingresar datos de prueba:
- Referencia:
001 - Cantidad:
10 - Presionar «Guardar».
- Verificar en la hoja de Salidas que los datos se registren correctamente.
Paso 4: Cálculo del Inventario
Fórmulas en la Hoja de Inventario
- Entradas:
=SUMIF(Entradas!A:A, A2, Entradas!D:D) - Salidas:
=SUMIF(Salidas!A:A, A2, Salidas!D:D) - Inventario:
=B2 - C2
Con esto, tienes una versión básica funcional del Web App para gestionar salidas de inventario en Google Sheets. En la próxima parte, mejoraremos esta versión y añadiremos más funcionalidades.