Saya menghitung jarak tempuh di google sheet dan saya memiliki kode di bawah ini yang berfungsi dengan baik tetapi hanya membaca 2 sel. Saya memerlukan kode untuk membaca 4 sel jika itu memungkinkan. Saya baru dalam penulisan kode jadi belum banyak pengalaman.

Itu perlu membaca 4 sel karena kami telah menetapkan tempat di mana pengemudi pergi jadi saya memilikinya dalam bentuk drop down tetapi kadang-kadang mereka pergi ke tempat baru sehingga mereka memiliki opsi untuk menambahkannya sendiri. Tetapi kode di bawah ini tidak akan mengambilnya.

function DrivingMeters(origin, destination) { 
   var directions = Maps.newDirectionFinder()
  .setOrigin(origin)
  .setDestination(destination)
  .getDirections();
  Utilities.sleep(100000);
  return directions.routes[0].legs[0].distance.value;
}

function DrivingMiles(origin, destination) {
  return DrivingMeters(origin, destination)/1609.34;
  Utilities.sleep(100000);
}

function DrivingSeconds(origin, destination) 
  var directions = Maps.newDirectionFinder()
  .setOrigin(origin)
  .setDestination(destination)
  .getDirections();
  return directions.routes[0].legs[0].duration.value;
  Utilities.sleep(100000);
}
1
user15122538 5 Mei 2021, 22:49

1 menjawab

Jawaban Terbaik

Anda perlu menggunakan addWaypoint. Kode di bawah ini menunjukkan cara mendapatkan jarak total. calculateDistance di bawah menerima setidaknya 2 lokasi. Sesuaikan sesuai dalam mendapatkan mil dan durasi.

Kode:

function calculateDistance(...locations){
  // accepts any number of locations but should at least be 2
  if(locations.length < 2) {
    return "Needs at least 2 locations";
  }

  // remove 1st location before looping and set it as origin
  var directions = Maps.newDirectionFinder().setOrigin(locations.shift());
  
  while(locations.length > 0) {
    // every non-final location is treated as waypoint
    if(locations.length > 1) 
      directions = directions.addWaypoint(locations.shift());
    // last location is always treated as destination
    else
      directions = directions.setDestination(locations.shift())
                             .setMode(Maps.DirectionFinder.Mode.DRIVING)
                             .getDirections();
  }

  var total_distance = 0;
  for (var i = 0; i < directions.routes[0].legs.length; i++)
    total_distance += directions.routes[0].legs[i].distance.value;

  return total_distance;
}

Keluaran:

output

EDIT:

  • Karena Anda dapat memiliki sel kosong, untuk mempermudah, filter dan gunakan hanya parameter dengan nilai.

Sampel:

sample data

Modifikasi kode:

function calculateDistance(...locations){
  // filter data to remove blank cells
  locations = locations.filter(Boolean);

  // accepts any number of locations, except 1
  if(locations.length < 2) {
    return "Needs at least 2 locations";
  }

Catatan:

  • Cukup lewati SEMUA 4 sel dari C ke F satu per satu. (mis. =calculateDistance(C2,D2,E2,F2))

Referensi:

1
NaziA 11 Mei 2021, 19:59