Wie aktualisiere ich automatisch eine Filteransicht in Google Sheets, wenn neue Daten über Google Forms eingehen?


8

Ich habe eine Filteransicht in Google Sheets, die nicht aktualisiert wird, wenn neue Daten über Google Forms eingehen.

Um die Filteransicht zu aktualisieren, kann ich den Filter entfernen und erneut anwenden oder einfach im Filtermenü auf "OK" klicken, ohne etwas zu ändern. F5 und das Schließen / erneute Öffnen der Seite funktioniert jedoch nicht.

Ich brauche eine Möglichkeit, die Filteransicht automatisch zu aktualisieren, wenn neue Daten eingehen. Oder zumindest die aktualisierte Filteransicht zu erhalten, wenn ich die Website schließe und wieder öffne, ohne manuell an den Filtereinstellungen herumspielen zu müssen.

Irgendwelche Ideen, wie ich das machen könnte? Vielleicht mit einem Skript, das auf FormSubmit ausgelöst wird?


Aktualisiert das Bearbeiten einer Tabelle die gefilterte Ansicht? Dann könnte Ihr Skript setValue einfach auf eine nicht verwendete Zelle anwenden. Apps-Skripte (infamöserweise) haben keine Möglichkeit, Filteransichten zu manipulieren.

Leider führen zufällige Änderungen in der Datei nicht dazu, dass die Filteransicht aktualisiert wird.
RudolfKaiser

Das ist in der Tat unglücklich. Wenn die einzige Benutzeraktion, die eine Filteransicht aktualisiert, das Berühren des Filters ist, kann ein Skript nicht helfen: Ein Skript kann einen Filter nicht berühren.

Danke für diese Information! Ich werde die Frage offen lassen, falls Google diese Funktion in Zukunft anbietet.
RudolfKaiser

Antworten:


4

Google Apps Script wird zum Erweitern von Google Sheets verwendet. Wie jedoch von @Normal Human festgestellt wurde, enthält es derzeit keine Methoden zum Aktualisieren / Aktualisieren von Google Sheets-Filtern.

https://code.google.com/p/google-apps-script-issues/ ist der Ort für Funktionsanfragen und Verbesserungen bestehender Google Apps Script-Dienste. Leute können eine Feature-Anfrage "upvoten", indem sie ein Problem markieren. In diesem Fall ist das verwandte Problem:

Problem 524: Integration von Tools / Filter in das Google Apps-Skript


Dieses Problem ist jetzt als gelöst markiert, beantwortet die Frage jedoch nicht direkt. Für G-Sheets-Amateure wie mich wäre es sehr hilfreich, wenn Sie Anweisungen dazu veröffentlichen könnten.
Elliott B

2

Versuchen Sie ein Skript, das auf FormSubmit ausgelöst wird. Holen Sie sich die gleichen Kriterien und setzen Sie sie erneut.

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

Herzlich willkommen. Wenn Sie die Verwendung eines Skripts vorschlagen, ist es besser, eine vollständige Funktion einzuschließen. Wenn diese zu groß ist, geben Sie die Hauptcodezeilen und einen Link zum Leerzeichen mit dem vollständigen Code an.
Rubén

1

Ich habe eine Problemumgehung gefunden, die das gleiche Ergebnis erzielt, obwohl die Einrichtung möglicherweise etwas länger dauert.

Ich erstelle eine Pivot-Tabelle mit den Daten, die aus den Google Forms-Ergebnissen eingehen, bearbeite die Tabelle, um die Daten so darzustellen, wie ich es möchte, und verknüpfe die Pivot-Tabelle dann mit einem neuen Blatt (unter Verwendung von = {'Blattname) '! A1: G100}) und formatiere das letzte Blatt so, wie ich es will.

Auf diese Weise können Sie die Daten in der Pivot-Tabelle filtern / bearbeiten, und sie werden im endgültigen Blatt wiedergegeben. Außerdem und vor allem wird es automatisch aktualisiert, sobald neue Formulardaten eingehen.

** Hinweis: Stellen Sie sicher, dass der Pivot-Tabellenbereich die leeren Zellen im Google Form-Ergebnisblatt enthält, in denen die Daten hinzugefügt werden. Das heißt, wenn Sie jetzt nur 50 Datenzeilen haben, aber wissen, dass Sie bis nächste Woche 1000 Zeilen haben, richten Sie den Bereich der Pivot-Tabelle auf 1000+ Zeilen ein!


1

Wenn ich eine Funktion in Google Sheets herausfinden muss, beginne ich manchmal mit der Aufzeichnung eines Makros, nehme die Änderung vor, die ich vornehmen möchte, und beende dann die Aufzeichnung des Makros. Dabei stellte ich fest, dass es eine Aktualisierungsfunktion gibt.

Ich habe eine einfache onEdit-Funktion geschrieben. Mein Filter wird nur aktualisiert, wenn die Daten auf einer bestimmten Seite geändert werden, da dies die einzige Seite ist, die die gefilterten Zeilen betrifft.

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();
  }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.