Tạo biểu mẫu in với Docs Google lấy dữ liệu Spreadsheet

Dân văn phòng thường xuyên in ấn, tạo báo cáo từ Spreadsheet, đây là hướng dẫn giúp bạn tạo ra được báo cáo động.

Hướng dẫn tạo báo cáo, in ấn kết nối Doc, Google sheet với Apps Script

B1: Chuẩn bị Google Docs Template

Tạo một Google Docs mẫu như sau, chèn các placeholder như:

Biên bản bàn giao

Tên khách hàng: {{TenKhachHang}}
Sản phẩm: {{SanPham}}
Số lượng: {{SoLuong}}
Ngày: {{Ngay}}

Sau đó lưu lại và lấy ID của Google Docs Template từ URL (ví dụ: https://docs.google.com/document/d/ID_CUA_TEMPLATE/edit)    , copy ra ngoài để ta đến bước code ta copy vào.

B2: Tạo 1 danh sách dữ liệu Spreadsheet

TT    Tên    Lương
1    Trần A    200
2    Lê C    1200
3    Trần D    400
....

Tạo 1 nút lệnh để gắn lệnh Apps Script

B3: Tạo Mã Apps Script

Vào Google Sheets → Extensions → Apps Script → dán đoạn code sau:

function xuatDocsTuSpreadsheet() {
  // ID file Docs mẫu
  const templateId = '1jI4lIE7BNhi5pdXSx25QMBfGan3MaPdm2dHHZhXv37o'; // thay bằng ID thực tế

  // Dữ liệu từ Google Sheet

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');

  let dong= sheet.getRange("G6").getValue();
  Logger.log(dong);

  const data = sheet.getRange('A2:C12').getValues()[dong-1]; // Dòng dữ liệu đầu tiên (có thể lặp nhiều dòng)

  const placeholders = {
    '{{TT}}': data[0],
    '{{HoTen}}': data[1],
    '{{Luong}}': data[2]    
  };

  // Tạo bản sao từ mẫu
  const newDoc = DriveApp.getFileById(templateId).makeCopy(`PhieuLuong_${data[0]}`);
  const doc = DocumentApp.openById(newDoc.getId());
  const body = doc.getBody();

  // Thay thế các placeholder
  for (let key in placeholders) {
    body.replaceText(key, placeholders[key]);
  }

  doc.saveAndClose();

  // Hiển thị link tới file mới
  let url_doc =  newDoc.getUrl();
  Logger.log('Tạo xong file: ' + url_doc);
 sheet.getRange("G7").setValue(url_doc);

}

B4: Chạy script

    Chạy hàm xuatDocsTuSpreadsheet() trong Apps Script.

    Mở View → Logs để lấy link file Docs được tạo.

    Có thể chỉnh để lặp qua nhiều dòng hoặc in ra PDF.

B5: In hoặc Xuất PDF

Nếu muốn tự động in hoặc gửi file PDF, có thể thêm đoạn:

const pdf = DriveApp.getFileById(newDoc.getId()).getAs('application/pdf');
// Gửi mail, hoặc tải về, hoặc lưu vào thư mục Drive khác

Hướng dẫn bằng video

Bài viết liên quan:

Dân văn phòng thường xuyên in ấn, tạo báo cáo từ Spreadsheet, đây là hướng dẫn giúp bạn tạo ra được báo cáo động.