Bài 7: Giới thiệu các Trigger App Script – onEdit onOpen

https://hocggsheet.com/gioi-thieu-trigger-app-script-onedit-onopen/

onEdit() và onOpen() là hai trigger cơ bản và phổ biến nhất của App Script. Để sử dụng chúng, bạn chỉ đơn giản là đổi tên function của bạn thành onEdit hoặc onOpen. Ví dụ:

01

function onEdit() {}

Để đọc thêm về các trigger, các bạn có thể truy cập vào link sau:

https://developers.google.com/apps-script/guides/triggers/

Trong bài này mình sẽ đưa ra các ví dụ cụ thể về việc ứng dụng chúng trong App Script Sheet. Để xem file luyện tập, các bạn hãy kéo xuống dưới cùng nhé. Còn đây là video hướng dẫn:

1. onEdit()

Một function có tên là onEdit sẽ: chạy chương trình khi người dùng (user) thay đổi một giá trị bất kì trong bảng tính Google Sheet

Ví dụ

Tiếp nối ví dụ của bài 6: câu lệnh if , lần này mình thực hiện yêu cầu sau:

Hình minh họa ví dụ onEdit

  • Trên Google Sheet, mình thêm một cột bên trái cột A cũ trong bài 6. Cột này được Xác thực dữ liệu, chỉ nhận 2 giá trị “Duyệt” hoặc “Không duyệt”

  • Khi chọn những lựa chọn ở cột A mới, ô chúng ta đang bấm vào được gọi là Active cell

  • Khi chọn “Duyệt”, dải ô gồm các ô cùng hàng với Active cell sẽ được di chuyển sang sheet1 ngay lập tức

  • Nếu chọn “Không duyệt” hoặc giá trị khác, thì để nguyên, không làm gì cả

Code hoàn chỉnh

function onEdit() {
   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);
   var activeCellValue = activeCell.getValue();
 
   if (activeCellValue == "Duyệt") {
     range.moveTo(dich);
     sheet0.deleteRow(activeCell.getRow());
   }
 }

Chú thích các biến

Biến

Ý nghĩa

activeCell

ô đang được kích hoạt ở Google Sheet

activeCellValue

giá trị của activeCell

range

lấy dải ô chứa các giá trị cùng hàng với activeCell

dich

đích đến khi thực hiện Di chuyển hoặc Copy dòng

2. onOpen()

Một function có tên là onOpen sẽ: chạy chương trình khi user mở file Google Sheet, hoặc làm mới (refresh) file. Ngoài ra, nếu file Google Sheet được kết nối với Google Form (biểu mẫu) thì onOpen sẽ chạy code mỗi khi có người gửi form (new response)

Ví dụ

Để minh họa ví dụ onOpen, mình viết một đoạn code đơn giản có mục đích như sau:

Khi user Làm mới / Mở file Google Sheet, ô H1 trong sheet0 sẽ ghi số lượng dòng có dữ liệu hiện đang có trong sheet0

function onOpen() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet0 = ss.getSheetByName("sheet0");
   var numRow = sheet0.getLastRow();
   
   sheet0.getRange('H1').setValue(numRow);
 }

Chú thích các biến

  • numRow dùng để lưu lại số lượng dòng có dữ liệu hiện đang có trong sheet0

Code nâng cao – Nối chuỗi

Ví dụ nâng cao minh họa onOpen

Để cải tiến code của ví dụ onOpen, mình muốn ô H1 hiện lên thông báo: “Hiện có … dòng”, với … là biến numRow. Để nối chuỗi, ta dùng dấu cộng (+). Lưu ý nhớ để kí tự trống ở sau hoặc trước các chuỗi nối.

function onOpen() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet0 = ss.getSheetByName("sheet0");
   var numRow = sheet0.getLastRow();
   
   sheet0.getRange('H1').setValue("Hiện có: " + numRow + " dòng");
 }

File luyện tại cho Bài 7

https://docs.google.com/spreadsheets/d/1Xtibys_azXe7DcQsgYno6yYEbNZo6CALrPd5zsq3d2s/edit#gid=0

Lưu ý: để xem, chỉnh sửa file và code, các bạn vui lòng chọn File (tệp) -> Make a copy (copy) để Copy file vào Google Drive của các bạn nhé.

Last updated

Navigation

Lionel

@Copyright 2023