Câu hỏi:

viết code app Script, lấy dữ liệu trên google sheet gồm năm cột và nhiều hàng xuất ra file docs mẫu gồm năm hàng, gọp tất cả file docs lại thành 1 file, sau đó mở file docs


Để thực hiện điều này, ta sẽ làm theo các bước sau:

  1. Lấy dữ liệu từ Google Sheets.
  2. Tạo các file Google Docs từ dữ liệu.
  3. Gộp tất cả các file Google Docs lại thành một file duy nhất.
  4. Mở file Docs cuối cùng.

Dưới đây là đoạn mã Google Apps Script để làm điều đó:

Bước 1: Lấy dữ liệu từ Google Sheets

function getDataFromSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  return data;
}

Bước 2: Tạo các tệp Google Docs từ dữ liệu

function createDocs(data) {
  var folder = DriveApp.createFolder('GeneratedDocs');
  for (var i = 1; i < data.length; i++) { // Bỏ qua hàng đầu vì đó là hàng tiêu đề
    var doc = DocumentApp.create('Doc_' + i);
    var body = doc.getBody();
    for (var j = 0; j < data[i].length; j++) {
      body.appendParagraph(data[0][j] + ': ' + data[i][j]);
    }
    var file = DriveApp.getFileById(doc.getId());
    folder.addFile(file);
  }
  return folder;
}

Bước 3: Gộp tất cả các file Google Docs lại thành một file duy nhất

function mergeDocs(folder) {
  // Tên của tệp tài liệu hợp nhất cuối cùng
  var finalDoc = DocumentApp.create('Merged Document');
  var finalBody = finalDoc.getBody();

  var files = folder.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    var tempDoc = DocumentApp.openById(file.getId());
    var tempBody = tempDoc.getBody();
    var totalElements = tempBody.getNumChildren();

    for (var i = 0; i < totalElements; ++i) {
      var element = tempBody.getChild(i).copy();
      finalBody.appendParagraph(element);
    }
    finalBody.appendPageBreak(); // Tạo ngắt trang giữa các tài liệu
  }

  return finalDoc;
}

Bước 4: Mở file Docs cuối cùng

function openFinalDoc(finalDoc) {
  var url = finalDoc.getUrl();
  Logger.log('Document URL: ' + url);
  var ui = HtmlService.createHtmlOutput('<a href="' + url + '" target="_blank">Open Merged Docs</a>');
  SpreadsheetApp.getUi().showModalDialog(ui, 'Open Merged Docs');
}

Kết hợp tất cả các hàm để hoàn thành quy trình

function main() {
  var data = getDataFromSheet();
  var folder = createDocs(data);
  var finalDoc = mergeDocs(folder);
  openFinalDoc(finalDoc);
}

Người anh em hãy chép đoạn mã trên vào Google Apps Script và chạy hàm main. Kết quả cuối cùng sẽ là một tệp Google Docs được gộp từ tất cả các tệp đã tạo, và tệp này sẽ được mở ra cho người anh em. Để biết thêm chi tiết và tài liệu tham khảo, ghé thăm trituenhantao.io.


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử