Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

346
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda