Bài 5: Di chuyển dòng từ Sheet này sang Sheet khác

https://hocggsheet.com/di-chuyen-dong-tu-sheet-nay-sang-sheet-khac-hoc-app-script-sheet/

Đây là bài tập nâng cao của Bài 4: copy / di chuyển dải ô sang sheet khác. Mục tiêu của bài này là chúng ta sẽ biết thêm về cách di chuyển dòng từ 1 sheet sang 1 sheet khác. Điều kiện kèm theo là khi ghi dòng mới qua sheet thứ 2, ta phải ghi được vào dòng tiếp theo trong sheet, chứ không ghi đè lên dòng cũ.

Xem clip hướng dẫn

  • Di chuyển dòng từ Sheet này sang Sheet khácTrước

  • Di chuyển dòng từ Sheet này sang Sheet khácSau

Code

function hocggsheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet0 = ss.getSheetByName("sheet0");
  var sheet1 = ss.getSheetByName("sheet1");  
  var activeCell = ss.getActiveCell();
  var range = sheet0.getRange(activeCell.getRow(), activeCell.getColumn(), 1, sheet0.getLastColumn());
  var dich = sheet1.getRange(sheet1.getLastRow()+1, 1, 1);
  range.moveTo(dich);
  sheet0.deleteRow(activeCell.getRow());
}

Giải thích

var activeCell = ss.getActiveCell();

Biến activeCell dùng để lấy vị trí của ô hiện tại chúng ta đang bấm vào.

var range = sheet0.getRange(activeCell.getRow(), activeCell.getColumn(), 1, sheet0.getLastColumn());

Còn biến range để lấy dải ô bắt đầu từ ô ta đang bấm vào đến ô cuối cùng trong dòng.

var dich = sheet1.getRange(sheet1.getLastRow()+1, 1, 1);

Sử dụng biến dich để lấy vị trí của “dòng bên dưới dòng cuối cùng” trong bảng sheet1.

Lưu ý: khi chỉ dùng getLastRow(), ta chỉ lấy được dòng cuối cùng có dữ liệu. Để lấy dòng tiếp theo nó, ta phải cộng 1 vào: getLastRow()+1


range.moveTo(dich);<br>sheet0.deleteRow(activeCell.getRow());

Tiếp theo dùng moveTo (hoặc copyTo) để di chuyển dải ô từ sheet0 sang sheet1. Sau đó, xóa dải ô bên sheet0 đi. Vì nếu không dùng deleteRow() thì sau khi di chuyển dải ô, dải ô cũ trong sheet0 sẽ trở thành dải ô trống không có dữ liệu.

Last updated