Làm cách nào tôi có thể áp dụng tập lệnh cho chỉ một trang cụ thể trong bảng tính?


9

Tôi có một bảng tính với hai tờ được gọi RobinLucy. Tôi đã tạo / tìm / đọc một tập lệnh để sắp xếp dữ liệu trên trang tính mỗi lần tôi thêm một số dữ liệu vào cột 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 } );
  }
}

Kịch bản này hoạt động tốt nhưng tôi chỉ muốn nó được áp dụng trên trang đầu tiên , Robin. Dữ liệu trong trang tính thứ hai, Lucykhông giống nhau, vì vậy tôi sẽ tạo một tập lệnh khác cho một phạm vi khác cho tập tin đó, một khi tôi hiểu được vấn đề này.

Tôi nghĩ rằng tôi cần phải sử dụng getSheetByName("Robin")nhưng dường như tôi không thể làm cho nó hoạt động.

Câu trả lời:


12

Có một vài cách để làm điều đó. Đầu tiên, bạn cần khai báo bảng tính:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

Thứ hai, khai báo tờ đầu tiên như thế này:

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

hoặc như thế này:

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

Sau đó, đặt ô hiện hoạt và truy xuất chỉ mục cột:

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

Và làm logic cho việc sắp xếp:

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

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

Mã hoàn chỉnh, rút ​​ngắn một chút:

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 Bạn có thể chấp nhận câu trả lời bằng cách đánh dấu nó, xem khu vực faq này. Không có gì.
Jacob Jan Tuinstra

Làm thế nào tôi có thể làm điều này để sắp xếp theo một cột, nhưng vì vậy nó cũng sắp xếp các cột khác để tất cả dữ liệu vẫn khớp trong các hàng?
moobot

1

Lấy trang tính liên quan (bảng tính) và cho biết tab (trang tính) nào bạn muốn có trọng tâm:

var theSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Robin");
// do the thing
var theSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Lucy"); 
// do the other thing

Tham khảo: https://developers.google.com.vn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.