it-swarm.com.de

Wie kann ich mit onOpen einige Daten in einem Google Spreadsheet automatisch sortieren lassen?

Ich habe mit @ W0lf gearbeitet hier aber ich kann das Gespräch nicht mehr kommentieren/fortsetzen.

Ich versuche, die Autosort-Funktion bei Open zu verwenden, aber es funktioniert nicht:

function onOpen(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var columnToSortBy = 4;
  var tableRange = "A2:F99";

  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy, ascending: false } );
  }

@ w0lfs Code für onEdit funktioniert:

function onEdit(event){
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 4;
  var tableRange = "A2:F99";

  if(editedCell.getColumn() == columnToSortBy){
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: false } );
  }
}
2
drizzt09

Sie müssen Ihre Variable ss in sheet umbenennen:

function onOpen(event) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();

  var columnToSortBy = 4;
  var tableRange = "A2:F99";

  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy, ascending: false } );
}

Wenn dies nicht funktioniert, versuchen Sie, den @ w0lf-Ansatz mit dem Ereignisargument zu verwenden:

var sheet = event.source.getActiveSheet();

UPDATE: Um nach mehreren Spalten zu sortieren, fügen Sie die Sortieroptionen wie folgt in ein Array ein:

range.sort( [4, 1] ); // or
range.sort( [{ column: 4, ascending: false }, 1] ); // or
range.sort( [{ column: 4, ascending: false }, { column: 1, ascending: false }] );

Weitere Informationen finden Sie in den Google Dev-Dokumenten: https://developers.google.com/apps-script/class_range#sort .

2
Oliver