Sao chép hàng từ trang tính này sang trang tính khác trên Google

Tìm hiểu cách bạn có thể sao chép một hàng hoặc nhiều hàng từ trang tính này sang trang tính khác trong tài liệu Google Trang tính bằng cách sử dụng Google Apps Script

Quản trị viên

26 tháng 11 năm 2020


Cách sao chép một hàng sang một trang tính khác bằng Google Apps Script

  • Chanel Greco
  • 26 Tháng mười một, 2020
  • 2. 01 giờ chiều

Bạn muốn sao chép một hàng hoặc nhiều hàng từ trang tính này sang trang tính khác trong Google Trang tính bằng Google Apps Script?

Trong trường hợp đó, bạn có thể làm theo hướng dẫn Apps Script này. Chúng ta sẽ tìm hiểu cách sao chép các hàng bằng cách sử dụng phương thức setValues ​​hoặc copyTo

Nếu bạn giống tôi, bạn có thể thích xem video hướng dẫn này.  

 

Tạo tài liệu Google Trang tính

Bước đầu tiên là tạo tài liệu Google Trang tính với trang nguồn và trang đích. Trong hướng dẫn này, trang nguồn của chúng tôi được đặt tên là “Source” và mục tiêu của chúng tôi là “Target”. Sau đó đi đến Script Editor để bắt đầu mã hóa

Nếu bạn chưa từng viết một dòng Google Apps Script nào trước đây hoặc bạn chỉ muốn cập nhật kiến ​​thức của mình thì hãy xem bài đăng trên blog này

Sao chép hàng từ trang tính này sang trang tính khác trên Google
Sau khi tạo tài liệu của bạn, hãy mở trình chỉnh sửa Tập lệnh

Sao chép hàng bằng Google Apps Script bằng cách sử dụng phương pháp setValues

Chúng tôi bắt đầu bằng cách lấy bảng tính đang hoạt động và sau đó lấy bảng nguồn theo tên

Sau đó, chúng tôi sẽ sử dụng các phương thức getDataRange và getValues ​​để lấy dữ liệu từ trang nguồn của chúng tôi

Tiếp theo, chúng tôi muốn tìm hiểu xem chúng tôi có bao nhiêu hàng và cột trong trang nguồn của mình. Thông tin này là cần thiết để xác định phạm vi chúng tôi muốn ghi dữ liệu của mình vào trang mục tiêu

Sau đó, đã đến lúc lấy trang mục tiêu của chúng tôi theo tên cũng như phạm vi để sao chép dữ liệu của chúng tôi sang

Dòng mã cuối cùng là sao chép thực tế dữ liệu của chúng tôi vào (phạm vi) mục tiêu của chúng tôi

function copyRowsWithSetValues() {
  let spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  let sourceSheet = spreadSheet.getSheetByName('Source');
  
  let sourceRange = sourceSheet.getDataRange();
  let sourceValues = sourceRange.getValues();
  
  let rowCount = sourceValues.length;
  let columnCount = sourceValues[0].length;
  
  let targetSheet = spreadSheet.getSheetByName('Target');
  let targetRange = targetSheet.getRange(1, 1, rowCount, columnCount);
  
  targetRange.setValues(sourceValues);
} 

Sao chép hàng bằng Google Apps Script bằng cách sử dụng phương thức copyTo

Cũng với cách sao chép các hàng này sang một trang tính khác, chúng tôi bắt đầu với việc lấy bảng tính của chúng tôi và trang nguồn

Khi chúng tôi có thông tin đó, chúng tôi sẽ nhận được phạm vi dữ liệu trên trang nguồn của mình. Chúng tôi không phải lấy các giá trị như chúng tôi phải làm trong ví dụ trước

Thay vào đó, chúng tôi trực tiếp lấy bảng mục tiêu của mình và sao chép phạm vi nguồn vào trang tính đó

function copyRowsWithCopyTo() {
  let spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  let sourceSheet = spreadSheet.getSheetByName('Source');
  
  let sourceRange = sourceSheet.getDataRange();
  
  let targetSheet = spreadSheet.getSheetByName('Target');
  
  sourceRange.copyTo(targetSheet.getRange(1, 1));
} 

Khóa học trực tuyến về Google Apps Script

Tìm hiểu cách tự động hóa Google Trang tính bằng Google Apps Script. Kiểm tra khóa học trực tuyến toàn diện của chúng tôi

Tìm hiểu thêm

Sao chép hàng từ trang tính này sang trang tính khác trên Google

setValues ​​so với. sao chép sang

Câu hỏi rõ ràng vào thời điểm này là. Bạn có nên sử dụng setValues ​​hay đúng hơn là copyTo để sao chép các hàng từ trang tính này sang trang tính khác bằng Google Apps Script không?

Câu trả lời ngắn gọn là. nó phụ thuộc. Đây là gợi ý của tôi về thời điểm sử dụng phương pháp nào

Bạn đang sao chép dữ liệu từ trang tính này sang trang tính khác và cả hai trang tính đều nằm trong cùng một tài liệu?

Bạn đang sao chép dữ liệu từ trang tính này sang trang tính khác nằm trong một tài liệu khác?

Và cũng lưu ý rằng để sử dụng phương thức setValues, bạn phải truyền vào một mảng hai chiều. Mặt khác, nếu bạn đang sử dụng phương thức copyTo, bạn cần một phạm vi dữ liệu