[Tips] - Tạo App Monitor để quản lý tình trạng website với Google Sheet
1. Mục đích: Theo dõi và cảnh báo tình trạng của một danh sách các website (live or die) tự động theo từng thời điểm mình mong muốn. Có gửi cảnh báo về email: danh sách các tên miền đang không hoạt động tại thời điểm kiểm tra, giúp quản lý hệ thống website vệ tinh hoặc danh sách tên miền của khách hàng (dành cho đại lý hoặc cộng tác viên đăng ký hộ tên miền cho người khác).

2. Cách làm:
- Bước 1:Tạo file Google Sheet mới => Thêm danh sách các tên miền cần theo dõi vào cột B bắt đầu từ cột B2 (B1 để đặt tiêu đề cột: DOMAIN chẳng hạn, tương tự ô C1 đặt tiêu đề cột STATUS để show trạng thái của danh sách tên miền tương ứng của cột B và ô D1 đặt tiêu đề cột là TIME để show thời gian cập nhật trạng thái.
- Bước 2: Chọn mục Extention ở menu trên => Apps Script => cửa sổ code hiện lên => xóa hết code (nếu có) => nhập đoạn script dưới đây:
function checkWebsitesStatus() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Thay đổi tên 'Sheet1' thành tên sheet của bạn
const domains = sheet.getRange("B2:B" + sheet.getLastRow()).getValues(); // Lấy danh sách domain từ cột B
const results = [];
const timestamps = [];
const inactiveDomains = [];
domains.forEach((row, index) => {
const url = "http://" + row[0]; // Thêm http:// nếu domain không có
try {
const response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
const statusCode = response.getResponseCode(); // Lấy mã trạng thái HTTP
results.push([statusCode]);
if (statusCode >= 400) { // Kiểm tra nếu mã trạng thái là 400 trở lên
inactiveDomains.push(url); // Thêm domain không hoạt động vào danh sách
}
} catch (e) {
results.push(["Error"]); // Thêm "Error" nếu không thể truy cập website
inactiveDomains.push(url); // Thêm domain vào danh sách không hoạt động
}
const timestamp = new Date(); // Lấy thời gian hiện tại
timestamps.push([Utilities.formatDate(timestamp, "GMT+07:00", "yyyy-MM-dd'T'HH:mm:ss'Z'")]); // Định dạng ngày giờ
});
sheet.getRange(2, 3, results.length, 1).setValues(results); // Ghi kết quả vào cột C
sheet.getRange(2, 4, timestamps.length, 1).setValues(timestamps); // Ghi thời gian cập nhật vào cột D
if (inactiveDomains.length > 0) {
sendAlertEmail(inactiveDomains); // Gửi email cảnh báo nếu có domain không hoạt động
}
}
function sendAlertEmail(inactiveDomains) {
const emailAddress = 'Your-mail@gmail.com'; // Thay đổi địa chỉ email của bạn
const subject = '[CẢNH BÁO] - Domain không hoạt động';
const message = 'Các domain sau không hoạt động:\n' + inactiveDomains.join('\n');
MailApp.sendEmail(emailAddress, subject, message);
}
function createTimeDrivenTriggers() {
// Tạo một trigger định kỳ mỗi 2 tiếng
ScriptApp.newTrigger('checkWebsitesStatus')
.timeBased()
.everyHours(2)
.create();
}
- Bước 3: Sửa thông tin 1 số chỗ trong các hàm như sau:
+ Hàm checkWebsitesStatus sửa “Sheet1” thành tên sheet của bạn
+ Hàm sendAlertEmail sửa Your-mail@gmail.com thành email muốn nhận cảnh báo
+ Hàm createTimeDrivenTriggers sửa tham số trong .everyHours (2) thành số giờ mà bạn muốn check định kỳ (ở đây để 2 nghĩa là mỗi 2 giờ sẽ thực thi script app 1 lần). Nếu muốn check theo định kỳ phút thì có thể sửa .everyHours (2) thành .everyMinutes(2).

- Bước 3: Chọn hàm createTimeDrivenTriggers và bấm nút Run để chạy hàm này nhằm set thời gian thực thi tự động => Hệ thống cảnh báo và yêu cầu quyền truy cập => Cho phép.
Như vậy là xong. Ngoài ra nếu bất kỳ lúc nào bạn muốn kiểm tra trạng thái của danh sách tên miền thì có thể chọn hàm checkWebsitesStatus và bấm Run để chạy hàm này rồi đợi kết quả báo về là xong.
Chúc các bạn thành công!
————————————
Nhà Đăng Ký Tên Miền iNET
Hà Nội: Số 247 Cầu Giấy, Phường Dịch Vọng, Quận Cầu Giấy
HCM: Số 40 Hoàng Việt, Phường 4, Quận Tân Bình
Hotline: 1900 9250
Email: tenmien@inet.vn
Website: https://inet.vn