<!DOCTYPE html> // Read more: https://vasanza.blogspot.com <html> <head> <title>Visualización de datos en tiempo real</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> <body> <h1>Visualización de datos en tiempo real</h1> <canvas id="myChart" width="800" height="400"></canvas> <button onclick="downloadCSV()">Descargar CSV</button> <!-- Botón para descargar CSV --> <script> // Código para acceder a los datos de Google Sheets y mostrarlos en un gráfico function loadSheetData() { fetch('https://sheets.googleapis.com/v4/spreadsheets/1K1oKWZeTyB6V7keslEzBkzIy-FDNqqUNyTUn8ZXARfE/values/Sheet1?key=YOUR_API_KEY') .then(response => response.json()) .then(data => { // Obtener datos para el gráfico let timestamps = data.values.slice(1).map(row => row[0]); // Timestamps desde la segunda fila let temperatures = data.values.slice(1).map(row => parseFloat(row[1])); // Datos de temperatura desde la segunda fila let humidity = data.values.slice(1).map(row => parseFloat(row[2])); // Datos de humedad desde la segunda fila let cpuTemp = data.values.slice(1).map(row => parseFloat(row[3])); // Datos de temperatura de CPU desde la segunda fila // Crear el gráfico utilizando Chart.js var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'line', data: { labels: timestamps, datasets: [{ label: 'Temperatura', data: temperatures, fill: false, borderColor: 'rgba(255, 99, 132, 1)', tension: 0.1 }, { label: 'Humedad', data: humidity, fill: false, borderColor: 'rgba(54, 162, 235, 1)', tension: 0.1 }, { label: 'Temperatura CPU', data: cpuTemp, fill: false, borderColor: 'rgba(75, 192, 192, 1)', tension: 0.1 }] }, options: { scales: { x: { display: true, title: { display: true, text: 'Timestamps' } }, y: { beginAtZero: true } } } }); }) .catch(error => console.error('Error:', error)); } // Función para convertir datos a formato CSV function convertToCSV(dataArray) { let csvContent = "data:text/csv;charset=utf-8,"; dataArray.forEach(function(rowArray) { let row = rowArray.join(","); csvContent += row + "\r\n"; }); return csvContent; } // Función para descargar el archivo CSV function downloadCSV() { fetch('https://sheets.googleapis.com/v4/spreadsheets/1K1oKWZeTyB6V7keslEzBkzIy-FDNqqUNyTUn8ZXARfE/values/Sheet1?key=YOUR_API_KEY') .then(response => response.json()) .then(data => { let csvData = data.values; // Obtener los datos completos // Convertir los datos a formato CSV let csvContent = convertToCSV(csvData); // Crear un enlace temporal y simular un clic para descargar el archivo CSV var encodedUri = encodeURI(csvContent); var link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", "datos.csv"); document.body.appendChild(link); // Agregar el enlace al cuerpo link.click(); // Simular clic para descargar }) .catch(error => console.error('Error:', error)); } loadSheetData(); // Llama a la función para cargar los datos al cargar la página </script> </body> </html>