Bagaimana saya bisa menerapkan skrip hanya ke satu lembar tertentu dalam spreadsheet?

9

Saya memiliki spreadsheet dengan dua lembar yang disebut Robindan Lucy. Saya telah membuat / menemukan / membuat skrip untuk mengurutkan data pada lembar setiap kali saya menambahkan beberapa data ke kolom A:

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 } );
  }
}

Script ini berfungsi dengan baik tetapi saya hanya ingin itu diterapkan pada lembar pertama Robin,. Data di lembar kedua,, Lucytidak sama, jadi saya akan membuat skrip lain untuk rentang yang berbeda untuk itu, setelah saya menyelesaikan masalah ini.

Saya pikir saya perlu menggunakan getSheetByName("Robin")tetapi sepertinya saya tidak bisa membuatnya bekerja.

oohrogerplamer
sumber

Jawaban:

12

Ada beberapa cara untuk melakukan itu. Pertama, Anda harus mendeklarasikan spreadsheet:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

Kedua, nyatakan lembar pertama seperti ini:

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

atau seperti ini:

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

Kemudian atur sel yang aktif dan ambil indeks kolom:

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

Dan lakukan logika untuk menyortir:

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

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

Kode lengkap, sedikit disingkat:

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});
  }
}
Jacob Jan Tuinstra
sumber
@oohrogerplamer Anda dapat menerima jawabannya dengan menandainya, lihat area faq ini . Sama-sama.
Jacob Jan Tuinstra
Bagaimana saya bisa melakukan ini untuk mengurutkan berdasarkan kolom, tetapi juga mengurutkan kolom lainnya juga sehingga semua data masih cocok di baris?
moobot