web-dev-qa-db-fra.com

Comment actualiser automatiquement une vue de filtre dans Google Sheets lorsque de nouvelles données arrivent via Google Forms?

J'ai une vue de filtre dans Google Sheets qui n'est pas actualisée lorsque de nouvelles données arrivent via Google Forms.

Pour actualiser l'affichage du filtre, je peux supprimer le filtre et l'appliquer à nouveau, ou même simplement cliquer sur "OK" dans le menu du filtre sans rien modifier. F5 et fermeture/réouverture de la page ne fonctionne pas, cependant.

J'ai besoin d'un moyen d'actualiser automatiquement l'affichage du filtre lorsque de nouvelles données arrivent. Ou du moins pour obtenir l'affichage du filtre actualisé lorsque je ferme et rouvre le site Web sans avoir à manipuler manuellement les paramètres de filtrage.

Des idées comment je pourrais faire ceci? Peut-être avec un script qui déclenche onFormSubmit?

7
RudolfKaiser

Le script Google Apps est utilisé pour étendre Google Sheets, mais comme l'a noté @Normal Human, il n'inclut pas pour le moment de méthode pour mettre à jour/actualiser les filtres Google Sheets.

https://code.google.com/p/google-apps-script-issues/ est le lieu idéal pour les demandes de fonctionnalités et les améliorations apportées aux services de script Google Apps existants. Les gens peuvent "upvoter" une demande de fonctionnalité en mettant en vedette un problème. Dans ce cas, la question connexe est la suivante:

Numéro 524: Intégration d'outils/Filtre avec le script Google Apps

4
Rubén

Essayez un script qui déclenche onFormSubmit. Obtenez et ensuite redéfinissez les mêmes critères.

  var sheet = SpreadsheetApp.getActiveSheet();
  var filter = sheet.getFilter();
  if (filter) {
    var criteria = filter.getColumnFilterCriteria(4);
    if (criteria) {
      filter.setColumnFilterCriteria(4, criteria)
    }
1
Peter

J'ai trouvé une solution de contournement qui crée le même résultat, bien que l'installation puisse prendre un peu plus de temps.

Ce que je fais est de créer un tableau croisé dynamique des données provenant des résultats de Google Forms, de manipuler le tableau afin de représenter les données comme je le souhaite, puis de le lier à une nouvelle feuille (à l'aide de = {'Nom de la feuille '! A1: G100}) et formatez la dernière feuille comme je le souhaite.

De cette façon, vous pouvez filtrer/manipuler les données dans le tableau croisé dynamique et elles seront reflétées dans la dernière feuille. En outre, et surtout, il se met automatiquement à jour à mesure que de nouvelles données de formulaire arrivent.

** Remarque: assurez-vous que la plage du tableau croisé dynamique inclut les cellules vides de la feuille de résultats de Google Form où les données seront ajoutées. ce qui signifie que si vous ne disposez que de 50 lignes de données maintenant, mais que vous savez que la semaine prochaine, vous aurez 1000 lignes, configurez la plage du tableau croisé dynamique sur plus de 1000 lignes!

1
Roman Y. K

Parfois, si je dois trouver une fonction dans Google Sheets, je commence à enregistrer une macro, à apporter les modifications souhaitées, puis à arrêter d'enregistrer la macro. En faisant cela, j'ai découvert qu'il y avait une fonction de rafraîchissement.

J'ai écrit une simple fonction onEdit. Mon filtre n'est actualisé que lorsque les données d'une page spécifique sont modifiées, car c'est la seule page qui affecte les lignes filtrées.

function onEdit(e){

  // Set a comment on the edited cell to indicate when it was changed.

  var range = e.range;
  var sheet = range.getSheet();

  if (sheet.getSheetName() === "CNST Cost Estimator")
  {
    UpdateFilter();
  }
}
1
wriddle2