Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

344
Vistas
Script Google Sheets error porque la celda está vacía

Traté de tomar un código y adaptarlo a mis necesidades pero sin éxito porque soy un novato en scripting.

Este código permite generar una imagen de Google Maps con marcadores para cada dirección y una línea que las conecta. En un principio este código era para 2 direcciones que teníamos que indicar en el código y la imagen generada se enviaba por correo electrónico.

Así que reescribí el código (solo el primero) para trazar y marcar los puntos de 6 direcciones y luego pegar la imagen generada en una celda de mi hoja.

El problema que tengo es que me sale el error "Excepción: Argumento no válido: dirección" cuando al menos una de las celdas que contienen las direcciones no contiene un valor (entonces el valor es una dirección). Necesito agregar algo después de la función .getValue() pero no puedo.

Sé que la respuesta a esta pregunta puede parecer simple para los usuarios avanzados de scripts, pero también que este código podría ser útil para otros.

Gracias por tu perspicacia e indulgencia.

Mis hojas:

https://docs.google.com/spreadsheets/d/1eZUlQK3-4WZmhQAIw5BTLsKkbTUheCTsdKEhdG0k87E/edit#gid=1047347094

Mi Sript:

 function onOpen() { SpreadsheetApp.getUi().createMenu('⇩ MENU ⇩') .addItem('👉 Générer les Cartes', 'myFunction') .addToUi(); myFunction() } function myFunction() { var sheet = SpreadsheetApp.getActive(); var address1 = sheet.getRange('K121').getValue(); var address2 = sheet.getRange('K122').getValue(); var address3 = sheet.getRange('K123').getValue(); var address4 = sheet.getRange('K124').getValue(); var address5 = sheet.getRange('K125').getValue(); var address6 = sheet.getRange('K126').getValue(); var map = Maps.newStaticMap().setLanguage('fr') .setSize(846,479) .setMapType(Maps.StaticMap.Type.HYBRID) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.GREEN,'1') .addMarker(address1) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.BLUE,'2') .addMarker(address2) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.BLUE,'3') .addMarker(address3) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.BLUE,'4') .addMarker(address4) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.BLUE,'5') .addMarker(address5) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED,'6') .addMarker(address6) .beginPath() .addAddress(address1) .addAddress(address2) .addAddress(address3) .addAddress(address4) .addAddress(address5) .addAddress(address6) .endPath() .getBlob() sheet.insertImage(map,5,15) }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esto recorrerá todas sus direcciones y verificará si están vacías o no y agregará al mapa solo las que no tengan una dirección vacía:

 function onOpen() { SpreadsheetApp.getUi().createMenu('⇩ MENU ⇩') .addItem('👉 Générer les Cartes', 'myFunction') .addToUi(); myFunction() } function myFunction() { var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName('AVRIL 22'); var addresses = sheet.getRange('K121:K126').getValues().flat(); var colors = [ Maps.StaticMap.Color.GREEN,Maps.StaticMap.Color.BLUE, Maps.StaticMap.Color.BLUE,Maps.StaticMap.Color.BLUE, Maps.StaticMap.Color.BLUE,Maps.StaticMap.Color.RED]; var map = Maps.newStaticMap().setLanguage('fr') .setSize(846,479) .setMapType(Maps.StaticMap.Type.HYBRID); addresses.forEach((address,i)=>{ if(address!=''){ map.addMarker(address) .setMarkerStyle(Maps.StaticMap.MarkerSize.MID,colors[i],(i+1).toString()) .addMarker(address) } }); map = map.endPath().getBlob(); spreadsheet.insertImage(map,5,15) }

Otra razón por la que no funciona ahora es porque tiene direcciones no válidas:

ingrese la descripción de la imagen aquí

pon los valores correctos y avísame si el código funciona.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El código de soMarios funcionaba bien pero los colores de los marcadores no eran correctos. Aquí está la solución de otra comunidad. Dejo el código si puede ayudar a alguien más.

 function onOpen() { SpreadsheetApp.getUi().createMenu('⇩ MENU ⇩') .addItem('👉 Générer les Cartes', 'myFunction') .addToUi(); myFunction() } function myFunction() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Testing") // Deletes all images in sheet var images = sheet.getImages(); images.map(function(img){img.remove();}); var cards = [] //gets the addresses of each card into an array for(i=0; i<16; i++) { cards.push(sheet.getRange(121, 11 + (15*i), 6, 1).getValues().flat()) } //loop through the array of cards for(c=0; c < cards.length; c++){ //create a new map var map = Maps.newStaticMap().setLanguage('fr') .setSize(846,479) .setMapType(Maps.StaticMap.Type.HYBRID) //remove blanks from card addresses var card = cards[c].filter(j => j) //begin a new path for the map map.beginPath() //loop through card addresses for(n=0; n < card.length; n++){ //add the nth address to the map map.addAddress(card[n]) //if first address, create new green marker (note n +1 due to array starting from 0 not 1) if(n == 0){ map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.GREEN,n+1) var marker = map.addMarker(card[n]) } //if last address, create new red marker else if(n == card.length - 1){ map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED,n+1) var marker = map.addMarker(card[n]) } //if any other address create blue marker else{ map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.BLUE,n+1) var marker = map.addMarker(card[n]) } } //end the path and insert the map image to the sheet map.endPath() map.getBlob() sheet.insertImage(map,5+ (15*c),15) } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda