web-dev-qa-db-fra.com

Comment faire des coordonnées des adresses entrant de l'ImporTrange?

J'ai des adresses à venir de importrange et j'utilise ce script pour obtenir des coordonnées.

function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Geo 4')

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];

for (var i = 0; i < cells.length; i++) {
var address = cells[i][11];
  
if (address == "") {
latitudes.Push([""]);
longitudes.Push([""]);
} else {
var geocoder = Maps.newGeocoder().geocode(address);  
  
  
  
var res = geocoder.results[0];
if(res){
latitudes.Push([res.geometry.location.lat]);
longitudes.Push([res.geometry.location.lng]);
}
else
{
latitudes.Push([0]);
longitudes.Push([0]);
}
}

sheet.getRange('O1').offset(0, 0, latitudes.length).setValues(latitudes)
sheet.getRange('P1').offset(0, 0, latitudes.length).setValues(longitudes);
}
}  

Le problème est que j'ai cela en cours d'exécution sur une gâchette toutes les 6 heures, mais j'ai besoin de quelque chose qui obtiendrait des coordonnées dès que l'une des modifications d'adresse sans exécuter toute la colonne et l'utilisation des 1000 géocodes que vous obtenez par jour. J'ai environ 350 adresses constamment mais peut-être trois changements par jour.

1
John K

Une fidélisation de feuille de calcul, comme celle qui fait IMPORTRANGE résultats sont mises à jour, n'activez généralement pas de déclenchement, uniquement des modifications apportées par l'utilisateur à l'aide de l'interface utilisateur de Google ou des modifications de la structure de feuille de calcul, comme l'insertion d'une ligne. Que diriez-vous de l'algorithme suivant?

Préparation

  1. Faites une copie des résultats de IMPORTRANGE

    Cela pourrait être fait manuellement ou en utilisant une autre fonction de script.

Sur chaque exécution de déclenchement à la fois

  1. Lisez les résultats actuels de IMPORTRANGE à partir de la feuille de calcul et des valeurs de la copie des résultats de IMPORTRANGE

  2. En utilisant une boucle

    1. Comparer un par un les résultats actuels de IMPORTRANGE avec la copie des résultats de IMPORTRANGE
    2. Pour chaque résultat qui a changé, obtenez les coordonnées
    3. Pour chaque résultat qui n'a pas changé ne rien faire ne rien faire
  3. Mettre à jour la feuille de calcul

    1. Remplacez l'ancien avec une copie des résultats de IMPORTRANGE
    2. Remplace les anciennes coordonnées avec les nouvelles coordonnées
1
Rubén