Warum wird dieses Google Apps-Skript beim Öffnen nicht automatisch sortiert?

Machen

Ich habe ein Google Sheets, das die Einträge aus einem Google Form registriert. Ich habe ein Skript eingerichtet, um das Blatt bei jedem Öffnen automatisch zu sortieren, und einen Auslöser, um das Skript beim Öffnen auszuführen, aber es findet keine Sortierung statt. Ich habe nur begrenzte Kenntnisse in Skripten und Javascript. Was ist los mit dem folgenden Skript?

function OrderByEvent() {
// The numeric index of the column you wish to keep auto-sorted. A = 1, B = 2,
// and so on.
var SORT_COLUMN_INDEX = 10;
// Whether to sort the data in ascending or descending order. false=ascending and true=descending
var ASCENDING = true;
// If you have header rows in your sheet, specify how many to exclude them from
// the sort.
var NUMBER_OF_HEADER_ROWS = 1;

// No need to edit anything below this line for general use.
// Make an improvement? Ping me on GitHub and let me know!

// Keep track of the active sheet.
var activeSheet;

/**
 * Automatically sorts on the pre-defined column.
 *
 * @param {Sheet} sheet The sheet to sort.
 */
function autoSort(sheet) {
  // Get the entire set of data for this sheet.
  var range = sheet.getDataRange();

  // Then, if there are any header rows, offset our range to remove them from
  // it; otherwise, they will end up being sorted as well.
  if (NUMBER_OF_HEADER_ROWS > 0) {
    // Setting the second parameter of offset() to 0 to prevents it from
    // shifting any columns. Note that row headers wouldn't make much
    // sense here, but this is where you would modify it if you
    // wanted support for those as well.
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }

  // Perform the actual sort.
  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}

function onOpen(event) {
  activeSheet = SpreadsheetApp.getActiveSheet();
  {autoSort(activeSheet);
  }
}

/**
 * Triggers when a sheet is edited, and calls the auto sort function if the
 * edited cell is in the column we're looking to sort.
 *
 * @param {Object} event The triggering event.
 */

//function onEdit(event) {
//  var editedCell;

  // Update the active sheet in case it changed.
//  activeSheet = SpreadsheetApp.getActiveSheet();
  // Get the cell that was just modified.
//  editedCell = activeSheet.getActiveCell();

  // Only trigger a re-sort if the user edited data in the column they're
  // sorting by; otherwise, we perform unnecessary additional sorts if
  // the targeted sort column's data didn't change.
//  if (editedCell.getColumn() == SORT_COLUMN_INDEX) {
//    autoSort(activeSheet);
//  }
//}
}
Tanaike

Wie wäre es mit dieser Antwort?

Änderungspunkte:

  • In Ihrem Skript, dessen Funktion onOpen()als einfacher Auslöser verwendet wird, wird eine Funktion von eingefügt OrderByEvent(). Auf diese Weise wird beim Öffnen der Tabelle onOpen()nicht ausgeführt. Selbst wenn OrderByEvent()es als installierbarer Trigger installiert OrderByEvent()ist, onOpen()wird es nicht ausgeführt , wenn es ausgeführt wird.
    • Auf diese Weise wird das Skript zum Sortieren nicht ausgeführt.
  • Wenn der OnOpen-Ereignisauslöser verwendet wird, können Sie das Ereignisobjekt verwenden.
    • Zum Beispiel SpreadsheetApp.getActiveSheet()kann modifiziert werden , event.sourcein Ihrem Skript. Natürlich event.source.getActiveSheet()kann verwendet werden.
    • Wenn ein Ereignisobjekt verwendet wird, können die Prozesskosten reduziert werden. Ref

Wenn die oben genannten Punkte in Ihrem Skript wiedergegeben werden, sieht es wie folgt aus. Bitte stellen Sie sich dies als eine von mehreren Antworten vor.

Geändertes Skript:

function autoSort(sheet) {
  var SORT_COLUMN_INDEX = 10;
  var ASCENDING = true;
  var NUMBER_OF_HEADER_ROWS = 1;
  var range = sheet.getDataRange();
  if (NUMBER_OF_HEADER_ROWS > 0) {
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }
  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}

function onOpen(event) {
  autoSort(event.source);
}
  • In Ihrem Skript kann das Skript mit dem einfachen Auslöser arbeiten. In diesem Fall ist es nicht erforderlich, den installierbaren Trigger zu installieren. onOpen()wird automatisch ausgeführt und funktioniert, wenn die Tabelle geöffnet wird.

Hinweis:

  • In dieser Änderung wird davon ausgegangen, dass Ihr Sortierskript funktioniert.

Verweise:

Wenn ich Ihre Frage falsch verstanden habe und dies nicht das gewünschte Ergebnis war, entschuldige ich mich.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Warum wird dieses Bash-Skript nicht beendet?

Warum sortiert dieses R-Skript die Matrix nicht so, wie ich denke, dass es sollte?

Warum dieses Skript nicht funktioniert

Warum wird Google Maps beim ersten Start nicht automatisch auf den Standort des Nutzers zoomen?

Warum wird dieses Java-Programm beim Beenden nicht geschlossen?

Karte in F# wird automatisch sortiert, aber ich weiß nicht warum

Abfrageimportbereich wird nicht aktualisiert, wenn das Skript automatisch ausgeführt wird - Fehler beim Laden

Makro beim Öffnen nicht automatisch ausgeführt

Warum endet dieses Skript nicht in einer Endlosschleife?

Warum funktioniert dieses jQuery-Skript nicht?

Warum funktioniert dieses 'jplist autocomplete'-Skript nicht?

Warum sammelt dieses Skript nicht alle Gmails?

Das Subbook Workbook_Open wird beim Öffnen der Arbeitsmappe nicht automatisch ausgeführt

Warum wird diese Tabelle nicht richtig sortiert?

Warum wird das Array nicht alphabetisch sortiert?

Warum wird meine Karte nicht richtig sortiert?

Probleme beim Sortieren meines Arrays. Warum wird mein Array nicht richtig sortiert?

Backup Google Apps-Skript wird nicht ausgeführt

Header wird im Google Apps-Skript nicht gelöscht

Warum funktioniert dieses Python-Skript nicht richtig, wenn es von MATLAB aufgerufen wird?

Warum wird dieses einfache Powershell-Skript bei Bedarf nicht beendet?

Warum funktioniert dieses Skript nicht? In der Live-Vorschau wird nichts angezeigt

Warum wird dieses Skript im Leerlauf, aber nicht in Jupyter Notebook ausgeführt?

Warum wird dieses PHP-E-Mail-Skript nicht an meine Yahoo-E-Mail gesendet?

Wird Hashmap automatisch sortiert?

Warum funktioniert dieses Skript nur, wenn es direkt von Powershell ausgeführt wird, nicht jedoch von einem anderen Skript?

Warum wird dieses Skript nicht ausgeführt, wenn sich der gesamte Code in einem Skript-Tag befindet?

Wird Pythons Queue.PriorityQueue nicht automatisch sortiert?

Google Data Studio-Aggregation mit Summe - warum wird nicht sortiert?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv