Hướng dẫn tạo bảng Công Nợ trên Google Sheets

Đăng vào: 3/16/2025, 1:40:50 PM | Admin

Dưới đây là hướng dẫn chi tiết từ A-Z về cách tạo một hệ thống tạo phiếu thu công nợ bằng Google Sheets, Google Docs & Apps Script.

Dưới đây là hướng dẫn chi tiết về cách tạo hệ thống quản lý công nợ và xuất phiếu thu tự động bằng Google Sheets, Google Docs và Google Apps Script.


Hướng Dẫn Tạo Hệ Thống Quản Lý Công Nợ Và Phiếu Thu Tự Động #

1. Giới Thiệu #

Hệ thống này giúp bạn quản lý công nợ của khách hàng trên Google Sheets và tạo phiếu thu tự động trong Google Docs. Sau khi chọn các dòng công nợ cần tạo phiếu thu, hệ thống sẽ tự động xuất file Google Docs với đầy đủ thông tin.

Chức năng chính: #

  • Lưu trữ danh sách công nợ khách hàng trên Google Sheets
  • Tạo phiếu thu tự động từ dữ liệu công nợ
  • Xuất phiếu thu dưới dạng Google Docs với định dạng phù hợp
  • Hiển thị hộp thoại kết quả với đường dẫn đến phiếu thu

2. Tạo Google Sheets Quản Lý Công Nợ #

2.1. Tạo bảng dữ liệu #

  1. Mở Google Sheets (Nhấn vào đây để tạo mới).
  2. Đổi tên sheet thành "Quản Lý Công Nợ".
  3. Nhập tiêu đề cột vào hàng đầu tiên:
Mã công nợ Mã KH Tên KH Số tiền nợ Ngày tạo Ngày đến hạn Đã trả Còn lại Trạng thái Ghi chú
CN001 KH001 Nguyễn Văn A 5,000,000 01/03/2024 31/03/2024 2,000,000 3,000,000 Còn nợ
CN002 KH002 Trần Thị B 7,500,000 05/03/2024 05/04/2024 0 7,500,000 Chưa trả

Mỗi dòng tương ứng với một khoản công nợ của khách hàng.


3. Viết Google Apps Script #

3.1. Mở trình soạn thảo Apps Script #

  1. Trên Google Sheets, vào Extensions > Apps Script.
  2. Xóa toàn bộ nội dung mặc định.
  3. Dán đoạn mã sau vào.

3.2. Mã Google Apps Script #

var APP_NAME = "Tạo Phiếu Thu Công Nợ";

/**
 * Hiển thị hộp thoại nhập số dòng công nợ cần tạo phiếu thu.
 */
function createReceipt() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt("Nhập số dòng công nợ cần tạo phiếu thu (VD: 3 hoặc 3-5 hoặc 3,5)");

  if (response.getSelectedButton() == ui.Button.OK) {
    var input = response.getResponseText();
    var rowNumbers = parseRowInput(input);

    if (rowNumbers.length === 0) {
      ui.alert("Lỗi: Vui lòng nhập số dòng hợp lệ!");
      return;
    }

    var docUrl = createReceiptDoc(rowNumbers);
    showResultPopup(docUrl);
  }
}

/**
 * Chuyển đổi chuỗi nhập thành mảng số dòng [3], [3,4,5], [3,5]
 */
function parseRowInput(input) {
  var result = [];
  var parts = input.split(',');

  for (var i = 0; i < parts.length; i++) {
    if (parts[i].includes('-')) {
      var range = parts[i].split('-');
      var start = parseInt(range[0].trim());
      var end = parseInt(range[1].trim());

      if (isNaN(start) || isNaN(end)) continue;
      for (var j = start; j <= end; j++) {
        result.push(j);
      }
    } else {
      var num = parseInt(parts[i].trim());
      if (!isNaN(num)) result.push(num);
    }
  }

  return result;
}

/**
 * Tạo phiếu thu trong Google Docs
 */
function createReceiptDoc(rows) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var doc = DocumentApp.create("Phiếu Thu Công Nợ - " + new Date().toLocaleDateString());
  var body = doc.getBody();

  body.appendParagraph(APP_NAME).setHeading(DocumentApp.ParagraphHeading.TITLE);
  body.appendParagraph("Ngày tạo: " + new Date().toLocaleDateString());

  var tableData = [["Mã công nợ", "Mã KH", "Tên KH", "Số tiền nợ", "Ngày tạo", "Ngày đến hạn", "Đã trả", "Còn lại", "Trạng thái", "Ghi chú"]];

  rows.forEach(function(row) {
    var rowData = sheet.getRange(row, 1, 1, 10).getValues()[0];
    tableData.push(rowData);
  });

  body.appendTable(tableData);
  var url = doc.getUrl();
  return url;
}

/**
 * Hiển thị hộp thoại kết quả với link Google Docs
 */
function showResultPopup(url) {
  var html = '<p>Phiếu thu đã được tạo thành công.</p>';
  html += '<input type="text" id="docUrl" value="' + url + '" style="width: 100%;" readonly />';
  html += '<button onclick="copyUrl()">Copy Link</button>';
  html += '<button onclick="window.open(\'' + url + '\')">Xem Ngay</button>';
  html += '<script>function copyUrl(){ var copyText=document.getElementById("docUrl"); copyText.select(); document.execCommand("copy"); alert("Đã copy link!"); }</script>';

  SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutput(html).setWidth(400).setHeight(200), "Kết Quả");
}

4. Cấp Quyền Cho Ứng Dụng #

  1. Nhấn Run (▶) > createReceipt để chạy lần đầu tiên.
  2. Google sẽ yêu cầu cấp quyền.
  3. Nhấn Advanced > Go to Tạo Phiếu Thu Công Nợ (unsafe).
  4. Chấp nhận quyền truy cập.

Ứng dụng yêu cầu quyền:

  • Truy cập Google Sheets để đọc dữ liệu công nợ.
  • Tạo và chỉnh sửa Google Docs để xuất phiếu thu.
  • Hiển thị hộp thoại trên Google Sheets.

5. Sử Dụng Ứng Dụng #

  1. Trên Google Sheets, vào Extensions > Apps Script > Run function > createReceipt.
  2. Nhập số dòng công nợ cần tạo phiếu thu (Ví dụ: 3, 3-5, 3,5).
  3. Nhấn OK.
  4. Hệ thống sẽ tạo phiếu thu và hiển thị popup chứa link Google Docs.
  5. Nhấn Copy Link để sao chép hoặc Xem Ngay để mở file.

6. Kết Quả: Phiếu Thu Trong Google Docs #

Mẫu phiếu thu được tạo:

TẠO PHIẾU THU - CÔNG NỢ
Ngày tạo: 16/03/2025

Bảng Công Nợ:

| Mã công nợ | Mã KH  | Tên KH       | Số tiền nợ | Ngày tạo  | Ngày đến hạn | Đã trả | Còn lại | Trạng thái | Ghi chú |
|------------|--------|-------------|------------|-----------|--------------|--------|---------|------------|---------|
| CN001      | KH001  | Nguyễn Văn A | 5,000,000  | 01/03/2024 | 31/03/2024   | 2,000,000 | 3,000,000 | Còn nợ    |         |

7. Tổng Kết #

Hệ thống Google Sheets + Apps Script này giúp:

  • Quản lý công nợ dễ dàng.
  • Tạo phiếu thu nhanh chóng.
  • Xuất file Google Docs chuyên nghiệp.

Nếu gặp lỗi, hãy kiểm tra lại dữ liệu đầu vào hoặc cấp quyền cho ứng dụng.