Tengo una hoja de Google conectada a mi base de datos MySQL con un script de Google. Puedo recuperar todos los datos de texto que quiero en lugar del blob almacenado en la base de datos. Aquí está el código php:
$insert = $conn->query("INSERT into images (image) VALUES ('$base64Img')");Solo dejé un campo para que quede claro
La columna de blob de la tabla se establece en "LONGBLOB". ¿Cómo puedo ver mi BLOB como una imagen en mi hoja de Google?
Esto es lo que probé:
function readFromTable() { var conn = Jdbc.getConnection(url, username, password); var stmt = conn.createStatement(); stmt.setMaxRows(1000); var results = stmt.executeQuery('SELECT image FROM images'); var numCols = results.getMetaData().getColumnCount(); var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName('Sheet1'); var arr=[]; while (results.next()) { var arr = []; for (var col = 0; col < numCols; col++) { arr.push(results.getBlob(col + 1)); } sheet.appendRow(arr); } results.close(); stmt.close(); }No recibo ningún mensaje de error, pero en mi hoja se imprime: JdbcBlob en la celda en lugar de la imagen real. Me gustaría poner la imagen en una celda de mi hoja de Google
JdbcBlob de JdbcResultSetAppsScriptBlob de JdbcBlobAppsScriptBlob en la hoja como imagen const jdbcBlob = results.getBlob(col + 1); const appsScriptBlob = jdbcBlob.getAppsScriptBlob(); sheet.insertImage(appsScriptBlob,1,1); //if image data is base64 encoded: sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(appsScriptBlob.getDataAsString())),1,1) Otra forma sería obtener una matriz de bytes usando getBytes() :
const byteArr = results.getBytes(col + 1); //if image data is base64 encoded: sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(Utilities.newBlob(byteArr).getDataAsString())),1,1)