es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer que un código active el evento onchange en el geocodificador de distancia de Google Apps Script.

Tengo un código de script para determinar la distancia entre las direcciones de origen y destino, ¿cómo puedo agregar un código de activación para completar automáticamente la columna de distancia, alguien puede ayudarme? Aquí está el código.

function GOOGLEMAPS(start_address, end_address, return_type) {

  var mapObj = Maps.newDirectionFinder();
  mapObj.setOrigin(start_address);
  mapObj.setDestination(end_address);
  var directions = mapObj.getDirections();

  var getTheLeg = directions["routes"][0]["legs"][0];

  var meters = getTheLeg["distance"]["value"];

  switch(return_type){
    case "miles":
      return meters * 0.000621371;
      break;
    case "minutes":
        // obtener duración en segundos
        var duration = getTheLeg["duration"]["value"];
        // convertir a minutos y retornar
        return duration / 60;
      break;
    case "hours":
        // obtener duración en segundos
        var duration = getTheLeg["duration"]["value"];
        // convertir a horas y retornar
        return duration / 60 / 60;
      break;      
    case "kilometers":
      return meters / 1000;
      break;
    default:
      return "Error: Tipo de unidad incorrecto";
   }

}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar un código de activador para completar automáticamente la columna de distancia, necesitamos crear una función que llame a la función GOOGLEMAPS y guarde el resultado en la columna de distancia.

    Aquí hay una función de ejemplo que hace eso:

    function calculateDistance() {
      var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1"); // Reemplazar "Sheet1" con el nombre de tu hoja
      var num_rows = sheet.getLastRow() - 1; // Supone que la primera fila son los encabezados
      var start_col = 1; // Columna A
      var end_col = 2; // Columna B
      var distance_col = 3; // Columna C, donde queremos guardar la distancia
    
      for (var i = 2; i <= num_rows + 1; i++) { // Comienza desde la fila 2
        var start_address = sheet.getRange(i, start_col).getValue();
        var end_address = sheet.getRange(i, end_col).getValue();
    
        if (start_address && end_address) { // Asegúrate de que ambas direcciones existan
          var distance = GOOGLEMAPS(start_address, end_address, "kilometers"); // Calcular distancia
    
          sheet.getRange(i, distance_col).setValue(distance); // Guardar distancia en la columna de distancia
        }
      }
    }
    

    Para configurar un activador, sigue estos pasos:

    1. Abre el editor de scripts en tu hoja de cálculo yendo a “Herramientas > Editor de scripts”
    2. Pega la función anterior en el editor de scripts
    3. Haz clic en “Editar > Activadores del proyecto actual”
    4. Haz clic en “Agregar activador” en la esquina inferior derecha
    5. Establece el menú desplegable “Elige qué función ejecutar” en “calculateDistance”
    6. Establece el menú desplegable “Seleccionar tipo de evento” en “Enviar formulario” o “Al cambiar”
    7. Haz clic en “Guardar”

    Ahora, la columna de distancia se completará automáticamente cada vez que se envíe un formulario o se realice un cambio en la hoja.

Comments are closed.