Exécution automatisée de plusieurs script calcul dans google sheet

Bonjour,

J'ai une nouvelle problématique à vous exposer :

J'ai un fichier contenant plusieurs onglets appelant divers scripts (10 fonctions) pour effectuer des calculs. En gros on change de la données et puis on effectue divers calculs via l'appel de fonction (scripts) collé dans les cellules .

1) Mon premier problème : si donnée chargé mise à jour , les calculs n'arrivent pas mettre à jour, Alors que les scripts fonctionne correctement

2) Mon deuxième problème : à l'ouvert calcul non effectué, ou fonction revoyant 0, Alors que les scripts fonctionne correctement

J'aimerais savoir s'il est possible un fonctionnement pour ces script (fonction) comme le fonctionnement des fonctions de base du tableur google sheet.

fonctionnement en automatique, qui envoie la donnée calculé automtiquement

Merci d'avance,

Bonjour,

La plupart des calculs doivent se faire par des fonctions natives de Google. Les script sont des outils puissants, mais pour moi plutôt réservés à des automatismes.

Il est probable que dans ton cas, l'enchaînement des scripts ne tiennent pas compte de résultats intermédiaires. Il faut comprendre que le script s'effectue côté serveur avec une copie de la feuille au moment du lancement du script. Dans certains cas, il faut indiquer au script que la feuille doit être réactualisée et que le script doit prendre en compte cette réactualisation, ceci se fait en incluant dans le script

SpreadsheetApp.flush()

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush

Bonjour,

Merci pour la fonction SpreadsheetApp.flush().

J'ai rajouté la fonction SpreadsheetApp.flush() et Utilities.sleep() dans tous mes scripts, mais j'ai toujours même problème. C'est sans doute le fait que mes fonctions sont appelées plusieurs fois au niveau de la même feuille de calcul et utilisant eux mêmes des données chargées.Je tente de trouver un compromis avec Utilities.sleep(), mais pas facile.

J'ai aussi cette fonction ci-dessous qui ne met pas à jour les données après un nouveau changement, la donnée précédemment chargée reste figée dans les cellules, je ne sais pas pourquoi. Pouvez -vous m'aider sur ce problème de rafraîchissement, j'aimerais le faire en automatique.

function myFunction() {

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hist.Taux");

var data = sheet.getRange('A4:DH' + sheet.getLastRow()).getValues()

// map va constituer une sorte de répertoire de dates uniques avec des valeurs

// 3 méthodes : .set , .has , .get

var dates = new Map()

for (col = 0; col < data[0].length; col += 4) {

for (ligne = 0; ligne < data.length; ligne++) {

if (data[ligne][col] != '') {

ladate = Utilities.formatDate(new Date(data[ligne][col]), "GMT+1", "yyyy-MM-dd")

if (dates.has(ladate)) {

console.log(ladate)

dates.set(ladate, dates.get(ladate) + data[ligne][col + 3])

}

else {

console.log('new ' + ladate)

dates.set(ladate, data[ligne][col + 3])

}

}

}

}

var sommes = []

// on mets ici le répertoire en tableau que l'on va trier

dates.forEach(function (value, key) { sommes.push([key, value]) })

sommes = (sommes.sort())

// on transfère

const comp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("compare");

comp.getRange('G2:H' + (sommes.length + 1)).setValues(sommes)

}

Je vous remercie d'avance,

J'ai aussi cette fonction ci-dessous qui ne met pas à jour les données après un nouveau changement, la donnée précédemment chargée reste figée dans les cellules, je ne sais pas pourquoi. Pouvez -vous m'aider sur ce problème de rafraîchissement, j'aimerais le faire en automatique.

il faudrait que je puisse avoir accès au fichier, savoir comment est appelée cette fonction

Bonjour,

Voici le lien mon fichier exemple :

si on change une valeur dans la colonne nommé value 2, il y a aucun changement dans la feuille compare.

J'ai modifié la fin du Script afin qu'il me retourne la variable "sommes" , car j'avais une erreur avec le setValues pour l'écriture dans le fichier

https://docs.google.com/spreadsheets/d/1mEnLNpGGizoo6hUw5fQUK3G_jSArfWfcNAJMphtJw38/edit?usp=sharing

si on change une valeur dans la colonne nommé value 2, il y a aucun changement dans la feuille compare.

C'est normal, le script ne tient compte que de la 3ème colonne

 data[ligne][col + 2]

comment doit-on tenir compte de

value 1    et     value 2

?

et puis si tu veux que ta fonction se réactualise, écris

=mySomme_column( Hist.Taux!A4:DH232 )

Bonjour,

C'est normal, le script ne tient compte que de la 3ème colonne

data[ligne][col + 2]

Au niveau fichier, j'ai n tableaux de 4 colonnes, je fais la sommation de la colonne "value 2" des n tableaux dans l'exemple envoyé, d'ou data[ligne][col + 2].

comment doit-on tenir compte de

value 1 et value 2

?

On ne fait pas la sommation de toutes les colonnes, on sélectionné au niveau du script quelle colonne est sommé.

si je mets data[ligne][col + 1], je somme la colonne "value 1" des n tableaux, si je mets data[ligne][col + 3], je somme la colonne "value 3" des n tableaux.

je vais essayé le mySomme_column( Hist.Taux!A4:DH232 )

Merci

bonjour,

une autre question concernant le temps exécution d'un script :

J'ai l'impression que le temps exécution des scripts augmente au cours du temps, par exemple 2s je passe à 11s pour le même Script.

Je ne comprend pas pourquoi il y a un tel écart , Avez vous une idée ?

merci d'avance

attention, les tableaux ou arrays ont des indices qui commencent à 0, donc quand j'écris data[ligne][col + 2] il s'agit de la valeur 2+1 donc 3

Rechercher des sujets similaires à "execution automatisee script calcul google sheet"