web-dev-qa-db-fra.com

Possible d'effectuer une "annulation" via un script d'application?

J'essaie de faire en sorte qu'une fonction tierce (CRYPTOFINANCE()) soit mise à jour chaque fois que je déclenche manuellement une mise à jour. Actuellement, il est mis à jour à chaque fois que j'efface le contenu de la cellule et que je clique sur Annuler. Donc, je pense simplement à créer un script qui sélectionne les cellules que je veux mettre à jour, les efface et clique sur annuler.

Malheureusement, je ne trouve aucun moyen d'exécuter une annulation via un script. La plupart du temps, je trouve que les références à cette fonction n'existent même pas, mais j'ai trouvé la référence à model.undo() , qui ressemble à ce dont j'ai besoin. Je n'arrive pas à comprendre comment le faire fonctionner.

Mon autre pensée était peut-être qu'il y avait un moyen de simplement sélectionner l'option Annuler dans le menu Edition via un script, mais j'ai le sentiment que ce n'est pas possible non plus.

Quelqu'un peut-il suggérer un moyen d'annuler via un script qui n'implique pas l'utilisation d'une feuille secondaire pour stocker les données "annuler"?

2
Jonathan van Clute

Le script Google Apps n'a pas les commandes annuler/rétablir.

REMARQUE: L'API en temps réel ne fait pas partie du script Google Apps et n'est pas incluse dans les services avancés.

L'alternative consiste à créer un script pour conserver les modifications apportées et, si nécessaire, les utiliser pour "annuler" ou "rétablir" l'action.

1
Rubén

Si votre objectif est d'actualiser la fonction CRYPTOFINANCE() qui est entrée dans une cellule donnée de la feuille, votre script doit le faire.

À l'aide de la méthode getActiveRange(), vous pouvez cibler par programme les cellules que vous souhaitez actualiser. Sélectionnez simplement les cellules que vous souhaitez actualiser dans la feuille de calcul pour les stocker dans range avec la méthode getActiveRange().

var ss= SpreadsheetApp.getSheetById(id);
var sheet = ss.getSheets()[0];
var range = sheet.getActiveRange();

De range vous pouvez obtenir chaque cellule individuelle avec ceci:

var cell = range.getCell(row, column);
// respectively to the range selected with 1, 1 being the upperleftmost cell.

Pour actualiser cette valeur, utilisez la méthode setValue comme suit:

cell.setValue('CRYPTOFINANCE(value)');

Lorsque cette chaîne est entrée dans la feuille, elle déclenchera automatiquement CRYPTOFINANCE() et s'actualisera.

0
pxlpnk-