Wie kann ich ein Skript nur auf ein bestimmtes Blatt in einer Tabelle anwenden?


9

Ich habe eine Tabelle mit zwei Blättern namens Robinund Lucy. Ich habe ein Skript erstellt / gefunden / entstellt, um die Daten auf dem Blatt jedes Mal zu sortieren, wenn ich Daten zu Spalte A hinzufüge:

function onEdit(event){

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

  var columnToSortBy = 1;
  var tableRange = "a2:I30";
    if(editedCell.getColumn() == columnToSortBy){   
   var range = sheet.getRange(tableRange);
   range.sort( { column : columnToSortBy } );
  }
}

Dieses Skript funktioniert gut, aber ich möchte nur, dass es auf das erste Blatt angewendet wird Robin. Die Daten im zweiten Blatt Lucysind nicht die gleichen, daher werde ich ein anderes Skript für einen anderen Bereich für diesen erstellen, sobald ich mich mit diesem Problem befasst habe.

Ich denke, ich muss das verwenden, getSheetByName("Robin")aber ich kann es scheinbar nicht zum Laufen bringen.

Antworten:


12

Es gibt verschiedene Möglichkeiten, dies zu tun. Zunächst müssen Sie die Tabelle deklarieren:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

Zweitens deklarieren Sie das erste Blatt wie folgt:

var sh0 = ss.getSheets()[0];

oder so:

var sh0 = ss.getSheetByName("Robin");

Stellen Sie dann die aktive Zelle ein und rufen Sie den Spaltenindex ab:

var editedCell = sh0.getActiveRange().getColumnIndex();

Und machen Sie die Logik für die Sortierung:

var columnToSortBy = 1;
var tableRange = "a2:I30";

if(editedCell == columnToSortBy){   
  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy } );
}

Vollständiger Code, etwas gekürzt:

function onEdit(){
  var sh0 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var editedCell = sh0.getActiveRange().getColumnIndex();

  if(editedCell == 1) { 
    var range = sh0.getRange("A2:I30");
    range.sort({column: 1});
  }
}

@oohrogerplamer Sie können die Antwort akzeptieren, indem Sie sie markieren. Siehe diesen FAQ- Bereich. Bitte.
Jacob Jan Tuinstra

Wie kann ich dies tun, um nach einer Spalte zu sortieren, aber auch nach den anderen Spalten, damit alle Daten in den Zeilen noch übereinstimmen?
Moobot

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.