Menu

Tự động hóa tạo danh sách công việc theo ngày với Google Apps Script

Hoàng Bắc Thanh 04/06/2026 21:10 283 lượt xem 3 trả lời

Chào mọi người,

Dạo gần đây mình có mày mò tìm hiểu về Google Apps Script để tự động hóa một vài tác vụ nhỏ trong công việc. Hôm nay mình muốn chia sẻ một script khá hay ho giúp tự động tạo danh sách công việc theo ngày từ một bảng dữ liệu gốc.

Tình huống: Mình thường xuyên phải theo dõi các công việc cần làm trong tuần. Thay vì copy-paste thủ công từng ngày, mình muốn có một danh sách tự động cập nhật.

Giải pháp: Sử dụng Google Apps Script để đọc dữ liệu từ một Google Sheet và tạo ra các trang tính con cho từng ngày, chứa các công việc tương ứng.

Cách thực hiện cơ bản:

  • Tạo một Google Sheet chính với các cột như: Tên công việc, Ngày bắt đầu, Ngày kết thúc, Người phụ trách.
  • Viết một đoạn script nhỏ trong Extensions -> Apps Script.
  • Script sẽ lặp qua từng hàng trong bảng dữ liệu chính.
  • Kiểm tra xem ngày của công việc có trùng với ngày hiện tại (hoặc ngày bạn muốn tạo danh sách) hay không.
  • Nếu trùng, copy công việc đó sang một trang tính con tương ứng với ngày đó. Nếu trang tính con chưa có, script sẽ tự tạo mới.

Ví dụ đoạn code đơn giản (minh họa):

function createDailyTasks() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Data'); // Tên sheet chứa dữ liệu gốc
  var dataRange = dataSheet.getDataRange();
  var values = dataRange.getValues();

  var today = new Date();
  var todayStr = Utilities.formatDate(today, Session.getScriptTimeZone(), 'yyyy-MM-dd');

  var dailySheetName = 'Tasks_' + todayStr;
  var dailySheet = ss.getSheetByName(dailySheetName);

  if (!dailySheet) {
    dailySheet = ss.insertSheet(dailySheetName);
    // Thêm tiêu đề cho sheet mới nếu cần
    dailySheet.appendRow(['Tên công việc', 'Ngày bắt đầu', 'Ngày kết thúc', 'Người phụ trách']);
  }

  // Xóa dữ liệu cũ trong sheet ngày để tránh trùng lặp
  if (dailySheet.getLastRow() > 1) {
    dailySheet.getRange(2, 1, dailySheet.getLastRow() - 1, dailySheet.getLastColumn()).clearContent();
  }

  for (var i = 1; i < values.length; i++) { // Bắt đầu từ hàng 1 để bỏ qua tiêu đề
    var row = values[i];
    var startDate = new Date(row[1]); // Cột Ngày bắt đầu
    var endDate = new Date(row[2]);   // Cột Ngày kết thúc

    // Kiểm tra nếu công việc đang diễn ra hoặc bắt đầu hôm nay
    if (startDate <= today && endDate >= today) {
      dailySheet.appendRow(row);
    }
  }
}

Script này có thể tùy biến thêm nhiều chức năng khác như tự động chạy hàng ngày, phân loại công việc, gửi thông báo... Nếu ai có kinh nghiệm về Apps Script hoặc muốn thảo luận thêm về các ứng dụng tự động hóa với Google Workspace thì vào đây trao đổi nhé!

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc quản lý công việc hàng ngày. Cái script này nghe có vẻ giải quyết được vấn đề lớn đó. Bạn có thể chia sẻ chi tiết hơn về cách bạn cấu trúc bảng dữ liệu gốc và các bước cài đặt script không? Mình đang muốn áp dụng ngay cho team đây.

5

Cái này hay quá! Mình cũng đang tìm cách tối ưu quy trình làm việc với Google Sheet. Bạn có thể chia sẻ thêm về cách bạn xử lý các trường hợp dữ liệu bị trùng lặp hoặc thiếu sót trong bảng gốc không? Mình nghĩ đó cũng là một vấn đề nhiều người gặp phải khi tự động hóa.

4

Hay quá bạn ơi! Mình cũng đang đau đầu với việc quản lý công việc hàng ngày. Cái script này nghe có vẻ giải quyết được vấn đề lớn đó. Bạn có thể chia sẻ chi tiết hơn về cách bạn cấu trúc bảng dữ liệu gốc và các bước cài đặt script không? Mình đang muốn áp dụng ngay cho team đây.

0

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký