Necesitas Acortar las url’s que te da OPEN AI con Dalle ?
Buenas Compañeros! El otro día mientras utilizaba el plugin que cree ( Quizz Mania) me encontré con un pequeño problema al prepararlos csv’s para los Test de Verdadero o Falso; el problema era básicamente que creaba las imágenes en el mismo google sheets con Dalle y el script que creé para ello (GPT 4 SHEETS) peeeroo… las url’s que te da Dalle tienen un tiempo máximo de 20 minutos, con lo cual al subirlas al plugin, cuando pasaban los 20 minutos se rompía las imágenes.
Gracias a Claude, pude solucionarlo de forma fácil. Creando un script que utiliza IMGBB para almacenar la imágenes y te devuelve la url de ésta plataforma en la que está la imágen alojada (de ésta manera ya no caduca la url de la imágen).
Como Acortar Enlaces de imágenes en Sheets?
Con el Script que te pasaré solo tienes que abrirte una cuenta en IMGBB (Totalmente Gratis) y darle a Subir imágenes.
GPT4Sheets GratisLos pasos son:
- Abrir una cuenta en IMGBB
- Crear una API
- En Google Sheets darle a ‘Extensiones’->’AppScrits’
- Se te abrirá el AppScripts de Google, tienes que darle a Añadir un Nuevo archivo
- Copia y Pega EL Código que te dejaré más abajo
- ves a tu hoja de cálculo, recarga la página y te saldrá en el menú una nueva opción llamada ‘Image Uploader’
- dale a Image Uploader y Subir Imágenes.
Listo! Las url’s largas que tenías se convertirán en cortas y encima las tendrás alojadas en otra plataforma!
Advertencia:
- El script está creado para acortar los links que estén en la columna D. Así que si tienes las imágenes en otra columna cámbialas a la columna D
- El código (script) que te dejaré a continuación está sin API; en la línea 3 donde pone ‘PON TU API? debes pegar la api que te de IMGBB
Script para almacenar y Acortar Imágenes en Google Sheets
function subirAImgBB(imageUrl) {
// Tu API Key de ImgBB - REEMPLAZAR
const IMGBB_API_KEY = 'PON TU API';
try {
// 1. Descargar la imagen de DALL-E
const imageBlob = UrlFetchApp.fetch(imageUrl, {'muteHttpExceptions': true}).getBlob();
// 2. Convertir la imagen a base64
const imageBase64 = Utilities.base64Encode(imageBlob.getBytes());
// 3. Subir a ImgBB
const response = UrlFetchApp.fetch('https://api.imgbb.com/1/upload', {
method: 'POST',
payload: {
'key': IMGBB_API_KEY,
'image': imageBase64
},
'muteHttpExceptions': true
});
// 4. Procesar respuesta
const responseData = JSON.parse(response.getContentText());
if (responseData.success) {
return responseData.data.url;
} else {
return 'Error: ' + JSON.stringify(responseData.error);
}
} catch(e) {
return 'Error: ' + e.toString();
}
}
function procesarImagenes() {
const sheet = SpreadsheetApp.getActiveSheet();
const urlRange = sheet.getRange('C:C');
const urls = urlRange.getValues();
let row = 1;
if (sheet.getRange('D1').getValue() === '') {
sheet.getRange('D1').setValue('URLs de ImgBB');
}
urls.forEach(function(url) {
if (url[0] !== '' && url[0].toString().startsWith('http')) {
SpreadsheetApp.getActive().toast('Procesando imagen ' + row, 'Estado');
const imgbbUrl = subirAImgBB(url[0]);
sheet.getRange(row, 4).setValue(imgbbUrl);
// Esperar 2 segundos entre subidas
Utilities.sleep(2000);
}
row++;
});
SpreadsheetApp.getActive().toast('¡Proceso completado!', 'Estado');
}
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Image Uploader')
.addItem('Subir Imágenes', 'procesarImagenes')
.addToUi();
}