Cómo importar contactos desde una hoja de cálculo (Excel / LibreOffice)

Titular de los derechos
Medialab-Prado

Este artículo pretende servir como primer paso para familiarizarse con las importaciones de datos en CiviCRM. Así que, en vez de explicar todas las opciones y todas las posibilidades, lo que haremos en importar un fichero ya que ya hemos fabricado con datos. En particular, importaremos el fichero adjunto "300 registros aleatorios".

Como su nombre indica, el archivo que importaremos contiene datos ficticios de 300 personas. Al final del artículo, explicaremos cómo generar ficheros más grandes para poder meter en nuestro CiviCRM de pruebas el número de contactos que queramos. Para esta sesión de trabajo, hemos decidido importar sólo 300 contactos porque, como veremos, el proceso de importación puede tardar, según la potencia de nuestro ordenador, cerca de medio segundo por contacto. Vamos, que es más lento que el caballo del malo.

Preparar un fichero "csv"

CiviCRM puede importar, por defecto, datos de dos formas: ficheros csv y directamente desde una tabla en MySQL. La segunda opción es para friquis. Seguramente, la gente con conocimientos técnicos como para entender qué es la segunda opción, no necesite esta guía, así que vamos a ignorarla y a ver cómo importar un csv, que es la opción más sencilla.

Pero, antes que nada, una pequeña explicación de qué es un fichero csv. Las siglas csv vienen de las palabras "Valores Separados por Comas", en inglés. Y un fichero con datos separados por comas puede tener, por ejemplo, este aspecto:

nombre,teléfono Carlos,600111222 Juana,912123123

Un fichero normal de Excel, o de LibreOffice (de los que tienen extensión ods, xls, o xlsx), tiene un montón de cosas a parte de los datos. Tiene, por ejemplo, información sobre el tipo de letra que hemos utilizado para cada celda, los colores de fondo de las celdas, o hasta las fórmulas y macros que hayamos utilizado en la hoja de cálculo. Toda esa información, está guardada en el fichero de Excel, o de LibreOffice. Un fichero csv es más sencillo porque sólo, única y exclusivamente, contiene los datos.

Como lo que queremos importar es precisamente eso, los datos, suele ser más apropiado importar datos desde un csv que directamente desde una hoja de cálculo. ¡Pero está chupado generar el csv a partir de una hoja de cálculo! Vamos a poner, a continuación, los pasos para generar el csv en LibreOffice (en Excel el proceso es prácticamente idéntico).

Lo primero es abrir la hoja de cálculo en la que tenemos los datos. En nuestro caso, el fichero 300 registros aleatorios.xls. Ahora, hay que "guardarla como" y escoger, entre la lista de formatos de archivo que hay abajo a la derecha el formato "Text CSV (.csv)". Otra forma de hacerlo, es elegir "guardar como" y, simplemente, poner 300 registros aleatorios.csv como nombre de fichero.

Imagen eliminada.

Cuando pulsemos Guardar, LibreOffice nos preguntará si estamos seguros de que queremos guardar con ese formato (o si preferimos guardar con el formato normal de LibreOffice, ods). Confirmaremos que queremos guardar como csv. Ahora, LibreOffice nos preguntará cómo queremos que sea el fichero. En particular, especificaremos:

  • Juego de caracteres: UTF-8
  • Separador: ";" (punto y coma, sin las comillas)
  • Delimitador de textos: " (comillas dobles, que es lo que viene por defecto)
  • Guardar las celdas como se muestran
  • Entrecomillar todos los textos

Imagen eliminada.

Para que nos entendamos, lo que hemos hecho significa que nuestro fichero tendrá, más o menos, este aspecto:

"first_name";"last_name";"gender";"email" "Sofia";"Khun";"F";"sofia.khun@amazon.com" "Juan";"Yabar";"M";"juan.yabar@flickr.com"

Preparar CiviCRM para importar datos

Para que sea más fácil preparar el fichero, hemos puesto los nombres de los países y provincias en castellano. Eso significa que el fichero que estamos importando, sólo lo entenderá un CiviCRM que ya hable español. Si no lo has hecho aún, aprovecha ahora para traducir tu CiviCRM siguiendo las instrucciones sobre cómo instalar las traducciones a español de nuestro CiviCRM.

El siguiente paso, es decirle a CiviCRM de qué países queremos aceptar datos y qué provincias queremos que "conozca" el sistema. Es sencillo porque CiviCRM ya tiene todos esos datos. Pero, por defecto, CiviCRM está preparado para Estados Unidos y hay que decirle que eso no es lo que queremos. Vamos al grano. Los pasos a seguir, son:

  • Abrir, en nuestro CiviCRM, la opción: Administrar > Localización > Idiomas, Moneda, Localizaciones.
  • En Países disponibles, los seleccionamos todos y pulsamos Añadir, para que pasen a la derecha. Así, decimos a CiviCRM que acepte datos de todos los países, no sólo de Estados Unidos.
  • En Provincias, seleccionamos España. Esto no afecta a la importación pero nos vendrá bien más adelante.
  • Pulsamos Guardar.

Meter los datos en CiviCRM

Venga, bah, vamos a meter primero los datos en CiviCRM y luego repasamos algunas cosas que hemos hecho sin prestarle mucha atención. Una vez tenemos los datos en un csv, es decir, con una pinta parecida a la del ejemplo de arriba, tenemos que abrir nuestro CiviCRM e ir a Contactos > Importar contactos. Aquí, lo importante es:

  1. En origen de datos, nos aseguraremos de escoger csv.
  2. Buscaremos el archivo que generamos antes (300 registros aleatorios.csv).
  3. Marcaremos "la primera fila contiene los nombres de las columnas".
  4. Especificaremos "Individual" como tipo de contacto a importar. Así, los contactos que creemos serán de ese tipo.
  5. Decidiremos "No comprobar duplicados". Si quisiésemos, podríamos especificar que no se creen registros si el correo electrónico, o el número de teléfono ya existían en nuestra base de datos. Además, podemos hasta definir esos criterios nosotros mismos, aunque no lo haremos ahora, por simplificar.
  6. Seleccionaremos ";" como separador de valores.
  7. Pulsamos Continuar.

Ahora, CiviCRM nos enseñará una previsualización en la que aparecen los datos de las dos primeras filas del fichero, con los nombres correspondientes a cada columna. A la derecha, nos permitirá relacionar cada columna del fichero con el correspondiente campo en CiviCRM.

Como el fichero lo creamos, desde el principio, pensando en que luego lo importaríamos en CiviCRM, le pusimos nombres de columnas que coinciden con los nombres que CiviCRM da a los campos (first_name, last_name, etc). Por eso, en esta pantalla, CiviCRM nos propone ya, por defecto, una asociación de campos bastante aceptable.

Sin embargo, como ya sabemos que CiviCRM, cuando importemos un fichero, nos va a dejar pasar por aquí, no tendremos que preocuparnos si, en nuestra hoja de cálculo, los campos se llaman "nombre" o "apellidos" en lugar de "first_name" o "last_name". Ahora:

  1. Revisaremos la asignación de campos (por si viésemos algo raro).
  2. Cambiaremos, por ejemplo, el tipo de teléfono del último campo a "Móvil".
  3. Pulsaremos Siguiente.

Este paso es posible/probable que tarde un poco. Lo que está haciendo CiviCRM ahora es simular la importación. Es decir, aún no importará los datos pero los revisará uno a uno, haciendo las mismas verificaciones que si los hubiésemos intentado introducir a mano.

Cuando, más adelante, queramos importar de verdad un fichero, podremos seguir todos los pasos que hemos hecho hasta ahora sin miedo a que pase algo raro. En caso de que hubiese algún dato incorrecto (Espana en vez de España, por ejemplo), CiviCRM nos avisaría en este paso, antes de haber importado aún los contactos. Así que podríamos corregir el fichero y volver a empezar.

En el caso del ejemplo que estamos siguiendo, el fichero contiene un error. ¿Sabrías decir cuál es y corregirlo? Por si tienes problemas, te hemos dejado el fichero ya generado y corregido: 300 registros aleatorios.csv. Descárgalo y prueba a seguir las instrucciones necesarias para "meter los datos en CiviCRM".

Cuando llegues a la pantalla final y veas que te confirma que se pueden importar los 300 registros sin errores, despliega abajo, donde pone "crear una etiqueta y asignarla a los contactos importados" y pon:

  • Etiqueta: Importados 04/03/2014
  • Descripción: Contactos ficticios importados el 4 de marzo de 2014

Así, podremos identificarlos más adelante.

Por fin, pulsa ¡Importar ahora! :-)

La importación tardará unos minutos. En cuanto termine, podremos ver los contactos que acabamos de importar:

  1. Abriendo Buscar > Buscar Contactos.
  2. En "con", escogiendo la etiqueta "Importados 04/03/2014".
  3. Y pulsando Buscar.

¡Mola!

Cosas importantes de las que hablamos poco

Para hacer más fácil la importación, nos hemos saltado algunas cosas que pueden ser importantes cuando intentemos hacer una importación con datos de verdad. Las cosas más importantes a tener en cuenta son:

  • Los correos electrónicos deben ser válidos. De hecho, hemos visto en este ejemplo que si intentamos importar un contacto con un correo electrónico que no es válido, CiviCRM va a rechazar esa fila. Ojo, eso no significa que el correo electrónico sea obligatorio. Sólo que, si se especifica, debe ser correcto.
  • El país y la provincia, deben escribirse exactamente como están en CiviCRM.

Si quieres un listado completo con las provincias españolas y como están en CiviCRM, te va a interesar descargar random_data.xls y echar un vistazo a la pestaña provincias.

Además, la pestaña datos de esa hoja de cálculo, tiene fórmulas que puedes "pegar hacia abajo" para generar tantos datos ficticios como quieras meter en tu CiviCRM de pruebas.