sábado, 19 de mayo de 2018

Traducir casillas de verificación con dos bucles

Si alguna vez habéis utilizado casillas de verificación

 ☐   ⛝  en un formulario para conseguir más de una opción en una misma pregunta,

os habréis encontrado que todas las contestaciones elegidas se meten en la misma celda

separadas por coma. Esto nos obliga a utilizar algún metodo especial para trabajar con ellas.


En el siguiente código conseguimos traducir estas opciones elegidas a otro idioma.

 Para ello necesitamos tener en la hoja de cálculo dos columnas con la lista de opciones

y sus traducciones. Parece un problema menor, pero si tenemos, pongamos por caso

10 opciones, las diferentes combinaciones posibles como contestación pueden ser,

corregirme si me equivoco: 10*9*8*7*6*5*4*3*2*1 = 3628800 posibilidades.


function reemplazar() {
 // Enlazamos a la hoja de calculo y a la pestaña
  var aplicacion = SpreadsheetApp.getActiveSpreadsheet()
  var itzulpenak = aplicacion.getRangeByName('itzulpenak').getSheet() // Utilizamos un intervalo

con nombre para que no influya que alguien cambie el nombre de la hoja


  // necesitamos saber cuantas hay que traducir, conseguimos todas las filas de la pestaña
       var todas = itzulpenak.getLastRow()

       // Hacemos un bucle que empieza en la fila 5 y acaba en la última fila, para recorrer

 todas las celdas

  for (var fila= 5; fila<=todas;fila++){
            
             // Conseguimos el valor de cada celda a traducir                var celda = itzulpenak.getRange(fila, 32).getValue()
               
             // Necesitamos buscar cada opción y traducirla por su prima en euskera

(hacemos un split y con un bucle traducimos cada trozo con replace)
             // Para eso hacemos un split
   
             var cada_una = celda.split(",")
               
                   // Por cada celda recorremos el resultado del split con un bucle y así traducimos                              for (una in cada_una){
                               
                                 //  Si no hay nada salimos del bucle
  
                                    if(cada_una== '') {
                                            break;
                                        }
                              
                              
                                     var cada = cada_una[una].trim() // quitamos el espacio blanco que queda  al principio
                                    
                                    
                                 // utilizamos una formula para conseguir la traducción. En las columna E y F están las opciones y sus traducciones
                                     var formula = itzulpenak.getRange(1, 31).setValue('=vlookup("'+cada+'";E:F;2;false)')
                                     var resultado = itzulpenak.getRange(1, 31).getValue()
                                    
                                 // Reemplazamos la traduccion en la celda, en cada vuelta el trozo
                              correspondiente
 
                                    var celda =celda.replace(cada,resultado)
                                    
                                 // Escribimos el resultado en la columna 33, cada una en su fila
                                     var resultado = itzulpenak.getRange(fila, 33).setValue(celda)
                               }
        }
}

No hay comentarios:

Publicar un comentario

Crear PDF horizontal

El código que vamos a mostrar aquí no ha sido creado por nosotros, sino que lo hemos encontrado en Internet. Objetivo: Publicar una pesta...