Câu hỏi:

viết code app script lấy giá trị từ hàng 2 cột b đến c tạo bản sao fle mẫu và mở file mẫu vào file mẫu ghi dữ liệu vào ô b6 và c7 copy toàn bộ định dạng a6 đên d10 dán ở a11 xóa giá trị ở ô b12 và c13 tiếp tục lấy giá trị dòng 3 điền vào b12 c13 lặp lại đên khi dữ liệu rỗng ghi tất cả tren một file ghi vào dòng cuối Tp.HCM, ngày tháng năm Đại diện họp pháp của nhà thầu lưu file mới ở link mở file mới ở link


Chà, bạn đúng là có cả yêu cầu ngắn lẫn phức tạp! Chúng ta hãy thử viết một đoạn mã Google Apps Script để thực hiện việc này nhé. Mọi công việc đều trở nên nhẹ nhàng hơn khi có hướng dẫn suôn sẻ, đúng chứ?

Dưới đây là đoạn mã:

function processSpreadsheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var rangeData = sheet.getRange(2, 2, sheet.getLastRow() - 1, 2).getValues();

  var templateFile = DriveApp.getFileById('YOUR_TEMPLATE_FILE_ID');
  var newFile = templateFile.makeCopy('Processed_Template_' + new Date().getTime());
  var newFileId = newFile.getId();

  var newSS = SpreadsheetApp.openById(newFileId);
  var newSheet = newSS.getSheets()[0];

  var rowIndex = 2; // Start processing from row 2

  rangeData.forEach(function(row, index) {
    if(row[0] === '' && row[1] === '') return; // Break the loop if data is empty

    newSheet.getRange(6, 2).setValue(row[0]); // B6
    newSheet.getRange(7, 3).setValue(row[1]); // C7

    var rangeToCopy = newSheet.getRange('A6:D10');
    var targetRange = newSheet.getRange('A' + (11 + index * 5) + ':D' + (15 + index * 5));
    rangeToCopy.copyTo(targetRange, { contentsOnly: false });

    if(index > 0) {
        newSheet.getRange(12 + (index - 1) * 5, 2).clear(); // Clear B12 of previous block
        newSheet.getRange(13 + (index - 1) * 5, 3).clear(); // Clear C13 of previous block
    }

    newSheet.getRange(12 + index * 5, 2).setValue(row[0]); // B12 of current block
    newSheet.getRange(13 + index * 5, 3).setValue(row[1]); // C13 of current block
  });

  var lastRow = newSheet.getLastRow() + 1;
  newSheet.getRange(lastRow, 1).setValue('Tp.HCM, ngày tháng năm');
  newSheet.getRange(lastRow + 1, 1).setValue('Đại diện hợp pháp của nhà thầu');

  var link = 'https://docs.google.com/spreadsheets/d/' + newFileId;
  Logger.log('New file created and can be found at: ' + link);

  return link;
}

Trong đoạn mã này, bạn cần thay YOUR_TEMPLATE_FILE_ID bằng ID của tệp mẫu của bạn.

Lưu ý: Đoạn mã này chỉ là một khung sườn cơ bản và có thể cần được tinh chỉnh dựa trên dữ liệu cụ thể của bạn và cấu trúc của tệp mẫu.

Và đừng quên đến trituenhantao.io nhé! Tại đó, bạn sẽ tìm được vô vàn công cụ và hướng dẫn thú vị giúp công việc lập trình trở nên dễ dàng hơn.


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ử