3 min

Crea un feed XML con Google Sheets

Aprende a convertir datos de una hoja de cálculo en un feed XML público y autoactualizable usando Google Sheets y un Apps Script, sin herramientas de pago ni servicios de scraping.

Crear un feed XML a partir de datos que se actualizan con frecuencia es posible usando solo Google Sheets y un pequeño Apps Script: la hoja de cálculo actúa como fuente de datos y el script publica su contenido como un endpoint XML accesible públicamente, que se actualiza de forma automática cada vez que cambia la hoja. Hace poco tuve que resolver exactamente este reto —convertir datos extraídos con regularidad en un feed XML— y en el pasado he ideado todo tipo de formas de extraer y preparar datos, por ejemplo para feeds de minoristas y de afiliados.

Así que, si necesitas convertir datos que se actualizan a menudo, en formato CSV u hoja de cálculo, en un feed XML externo, he preparado una guía paso a paso para lograrlo con herramientas gratuitas. Solo necesitarás algunos datos, Google Sheets y el Apps Script que he creado más abajo.


Paso 1: Prepara tu hoja de Google Sheets

Primero, crea o abre una hoja de Google Sheets que contenga los datos que quieres convertir a XML.

La primera fila debe contener siempre los encabezados de las columnas: estos se convertirán en tus etiquetas XML, así que ten cuidado de imitar la convención de nombres que requiera el esquema XML de tu aplicación de destino.

Paso 2: Crea el Apps Script

  1. Abre tu hoja de Google Sheets
  2. Haz clic en "Extensiones" en el menú superior
  3. Selecciona "Apps Script"
  4. En el editor de Apps Script, pega el siguiente código:
function doGet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rows = sheet.getDataRange().getValues();
  var xml = '<?xml version="1.0" encoding="UTF-8"?>\n';
  xml += '<data>\n';
  
  for (var i = 1; i < rows.length; i++) {
    xml += '  <item>\n';
    for (var j = 0; j < rows[0].length; j++) {
      xml += '    <' + rows[0][j] + '>' + rows[i][j] + '</' + rows[0][j] + '>\n';
    }
    xml += '  </item>\n';
  }
  
  xml += '</data>';
  
  var response = ContentService.createTextOutput(xml)
    .setMimeType(ContentService.MimeType.XML);
  
  return response;
}

Este práctico y pequeño script hace el trabajo. Así es como funciona:

  • Lee todos los datos de tu hoja activa
  • Crea una estructura XML en la que cada fila se convierte en un elemento
  • Usa los encabezados de tus columnas como etiquetas XML
  • Envuelve todo en un elemento raíz
  • Establece el tipo Mime en XML

Paso 3: Despliega la aplicación web

  1. Haz clic en el botón "Deploy" en la esquina superior derecha

  2. Selecciona "New deployment"

  3. Haz clic en "Select type" y elige "Web app"

  4. Configura los ajustes del despliegue: * Description: escribe una descripción para tu despliegue (opcional) * Execute as: elige "Me" * Who has access: selecciona "Anyone" para hacerla accesible públicamente

  5. Haz clic en "Deploy"

  6. Cuando se te pida, revisa y autoriza los permisos

  7. Copia la URL de la aplicación web que se proporciona tras el despliegue

Hay una serie de trámites de autorización por los que hay que pasar. Todos te resultarán muy familiares, porque básicamente estás concediendo permisos de aplicación sobre tu cuenta de usuario de Google. Probablemente recibas esta advertencia de aplicación no autorizada, que no debería preocuparte:

Este es el paso al que simplemente hay que prestar atención:

Al hacer clic en avanzado, puedes continuar y conceder permiso. Al final obtendrás la URL del feed XML, que será accesible desde el exterior, en cualquier lugar:

Paso 4: Uso de tu feed XML

La URL de la aplicación web que has recibido es ahora el endpoint de tu feed XML. Puedes:

  • Acceder a ella directamente en un navegador web
  • Usarla en lectores de feeds
  • Consumirla en otras aplicaciones

Aquí está el movimiento maestro: tu feed XML se actualizará automáticamente siempre que cambien los datos de tu hoja de Google Sheets.

Esto significa que (por ejemplo) podrías contratar a un freelancer de Upwork para actualizar tus datos con regularidad. En marketing de afiliación esto es oro, porque puedes explorar feeds de precios personalizados de minoristas por una mínima fracción del coste de los servicios SaaS de scraping. Y ese es solo un ejemplo: hay muchas más formas de usar esto, así que ¡disfrútalo!


Artículos relacionados

Artículos relacionados