1
votes

Comment mettre à jour la valeur de manière permanente à partir de la fonction ImportXML

Dans Google Sheets, j'ai une feuille de calcul avec plus de 150 fonctions importXML. J'utilise cette formule pour extraire les vues YouTube des diffusions en direct de mon organisation au cours de l'année écoulée. Parfois, lorsque la feuille de calcul est ouverte et que la fonction importXML s'actualise, elle affichera #ERROR jusqu'à ce qu'elle s'actualise à nouveau (à quel point elle retournera une valeur sans erreur). Il affichera #ERROR uniquement sur une poignée de cellules aléatoires à chaque fois et le reste des nombres s'actualisera sans problème. Et généralement, si j'attends environ 5 minutes, il se rafraîchira à nouveau et les cellules avec #ERROR renverront la valeur réelle. Bien qu'énervant, certaines cellules à ce stade qui avaient déjà des valeurs réelles renverront désormais au hasard #ERREUR.

Je pense que je pourrais résoudre ce problème si seulement je pouvais commander à la cellule d'afficher le dernier numéro mis à jour au lieu de #ERROR. Comment puis-je demander à Google Sheets de mettre à jour une valeur statique au lieu d'avoir à compter sur la fonction pour actualiser chaque fois que la feuille est chargée?

Exemple: La dernière fois que la feuille a été mise à jour à la ligne 30, le nombre était de 3045. Mais j'ai rafraîchi la page et maintenant elle affiche #ERROR à la fin de la ligne 30.

Au lieu de #ERROR, comment puis-je obtenir que la feuille affiche la dernière valeur (3045) jusqu'à ce que la formule s'actualise sans retourner une erreur. Disons maintenant que la valeur est de 3047. Donc, idéalement, la formule afficherait 3047 jusqu'à ce qu'elle se rafraîchisse à nouveau, et je n'aurais jamais eu à revoir cet embêtant #ERROR.

J'ai trouvé un moyen de faire afficher la formule «0» au lieu de #ERROR, et j'ai entré manuellement le dernier numéro mis à jour sur plusieurs cellules problématiques, mais ce n'est pas le cas une solution automatique.

Pour que la formule affiche "0" au lieu de #ERROR, j'ai ajouté un wrapper = IFERROR autour de la formule. Je voudrais utiliser ce wrapper pour afficher le dernier numéro mis à jour au lieu de "0"

Formule principale:

=IFERROR(value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?","")),"//@last")

Formule principale avec IFERROR:

=IFERROR(value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?","")),0)

Formule principale avec IFERROR et "// @ last" qui NE FONCTIONNE PAS

=value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?",""))

Utilisation de "// @ last" comme valeur IFERROR au lieu de "0"

Attendu: le dernier numéro mis à jour est affiché dans la cellule au lieu de #ERROR

Résultats: la cellule affiche simplement // @ last lorsqu'elle est renvoyée avec une erreur.


0 commentaires

3 Réponses :


0
votes

il n'y a pas de paramètre // @ last dans Google Sheets. la meilleure pratique consiste à utiliser un IFERROR vide comme:

=IFERROR(formula())

sinon, vous auriez besoin d'un script qui archivera périodiquement toute votre feuille dans une autre feuille, puis vous pourriez appeler via le 2ème paramètre de IFERROR


2 commentaires

Merci beaucoup pour votre réponse. Puis-je éventuellement créer un script pour archiver périodiquement le dernier numéro mis à jour dans une autre cellule? À quoi ressemblerait un tel script?


Merci, je crois que c'est proche de ce que je recherche. Avez-vous des suggestions sur la manière dont je pourrais configurer le script pour qu'il se mette à jour uniquement si la valeur renvoyée est pas "#ERROR" ou "0" ou toute autre valeur IFERROR?



0
votes

Vous pouvez peut-être essayer de remplacer la méthode au lieu de la valeur lorsque IFERROR se produit, ce qui signifie que vous pouvez essayer à nouveau d'importxml () une fois que vous obtenez l'erreur, quelque chose comme:

= IFERREUR (importXML (), importXML ());

ou peut-être essayer deux fois:

= IFERREUR (importXML (), IFERREUR (importXML (), importXML ()))


0 commentaires

0
votes

J'ai environ 100 champs dans la même feuille de calcul ayant le même problème. Google devrait avoir un système de mise en cache du dernier bon chiffre connu.

Au lieu que la feuille de calcul continue de se rafraîchir, en utilisant IFERROR enchaîné dans la même feuille de calcul, j'ai simplement dupliqué la même feuille avec uniquement les cellules importXML importantes dans d'autres feuilles de calcul. Enchaîner 2 vers le haut. Il IFERROR >> Feuille de calcul 2 >> IFERROR >> Feuille de calcul 3 >> IFERROR "rafraîchir" - alors je sais que les 3 ont échoué! Selon les possibilités, il est très peu probable que les 3 mêmes cellules importxml similaires échouent simultanément.

Réduit une grande partie de mes calculs d'erreurs. J'ai aussi ajouté une case à cocher à côté de la cellule. Si valeur = TRUE, importxml. FAUX> "". Cochez manuellement, décochez pour actualiser.

Je ne suis pas un codeur, si quelqu'un a une solution de script qui peut simplement exécuter des plages de cellules spécifiées avec une remarque "rafraîchir" et pour automatiser la tâche de la case UNTICK et ensuite re-TICK, devrait faire l'affaire.


0 commentaires