2017-09-08 2 views
0

Le titre résume assez bien. J'ai besoin d'une cellule de mon document pour refléter la dernière fois qu'une cellule du document a été mise à jour. "= now()" ne fonctionne pas, car now() est évalué à chaque fois que la feuille est évaluée - même s'il n'y a pas de changement. Cela signifie que même le simple fait d'appuyer sur le bouton de rechargement du navigateur entraîne maintenant() la mise à jour de sa cellule - TWICE!Existe-t-il une expression de formule Google Sheets qui évalue uniquement lorsque la feuille est modifiée?

Je préfère ne pas utiliser le déclencheur onEdit dans le script, car cela nécessiterait que j'ajoute ce script à plus de 1000 feuilles. J'ai déjà un moyen d'éditer un document via l'API des feuilles de python, il serait donc assez facile d'ajouter automatiquement l'expression là où j'en ai besoin.

Répondre

0

Les fonctions de feuille de calcul volatile ne conviennent pas pour les horodatages, pour la raison que vous avez indiquée.

Utilisez un déclencheur. Vous n'avez pas besoin d'ajouter un script à chaque feuille. Un seul script Google Apps autonome peut automatiquement installer un déclencheur «sur modification» pour plusieurs feuilles de calcul, en utilisant forSpreadsheet(key) method. Exemple:

var ids = ['ss_id1', 'ss_id2', ... ]; // array of spreadsheet IDs 
for (var i = 0; i < ids.length; i++) { 
    ScriptApp.newTrigger('timestamp').forSpreadsheet(ids[i]).onEdit().create(); 
} 
function timestamp(e) { 
    e.source.getActiveSheet().getRange(1, 1).setValue(new Date()); 
} 

Maintenant, chaque fois que l'une des feuilles de calcul indiquée est modifié, la cellule A1 de la feuille qui a été édité en elle aura le temps de la modifier.

Cela ne fonctionnera probablement pas pour 1000 déclencheurs, en raison de current limitations de 20 déclencheurs par utilisateur par script. On dirait que vous aurez besoin de 50 copies du script autonome, ce qui est un étirement mais toujours gérable.


Une autre alternative consiste à exécuter un script Google Apps prévu qui récupère « Dernière modification » dates de feuilles de calcul dans le répertoire (en utilisant DriveApp) et édite celles des feuilles de calcul.

Encore un autre est d'abandonner. Peut-être n'avez-vous pas besoin d'une cellule pour stocker les informations déjà disponibles dans l'interface de la feuille de calcul, "Dernière édition".