Câu hỏi:

viết code app script lấy giá trị từ hàng 2 cột b đến c đến khi dữ liệu rỗng 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 a6 đên d10 dán ở a 11 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 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 lên


Để thực hiện tất cả các bước bạn mô tả bằng Google App Script, đây là một đoạn mã có thể giúp bạn bắt đầu:

function manipulateSheet() {
  const TEMPLATE_ID = 'TEMPLATE_FILE_ID_HERE'; // Thay thế bằng ID của file mẫu.
  const FOLDER_ID = 'FOLDER_ID_HERE'; // Thay thế bằng ID của thư mục lưu file mới.

  // Mở bảng tính nguồn dữ liệu.
  const sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = sourceSpreadsheet.getSheetByName('Sheet1'); // Thay thế 'Sheet1' bằng tên sheet thích hợp.

  // Đọc dữ liệu từ hàng 2, cột B đến cột C đến khi dữ liệu rỗng.
  const dataRange = sourceSheet.getRange('B2:C').getValues();
  const data = dataRange.filter(row => row[0] !== '' || row[1] !== '');

  if (data.length === 0) {
    Logger.log("Không có dữ liệu để xử lý");
    return;
  }

  // Tạo bản sao của file mẫu.
  const templateFile = DriveApp.getFileById(TEMPLATE_ID);
  const copy = templateFile.makeCopy(`Bản sao - ${new Date().toISOString()}`, DriveApp.getFolderById(FOLDER_ID));
  const copiedSpreadsheet = SpreadsheetApp.open(copy);
  const copiedSheet = copiedSpreadsheet.getSheets()[0];

  // Mở file mẫu và bắt đầu ghi dữ liệu.
  let currentRow = 6;
  for (let i = 0; i < data.length; i++) {
    if (i === 0) {
      // Ghi dữ liệu hàng đầu tiên vào B6 và C7.
      copiedSheet.getRange('B6').setValue(data[i][0]);
      copiedSheet.getRange('C7').setValue(data[i][1]);
    } else {
      // Copy A6:D10 đến A11 và các dòng tiếp theo.
      copiedSheet.getRange('A6:D10').copyTo(copiedSheet.getRange(`A${currentRow}`), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
      currentRow += 5;

      // Điền dữ liệu vào B và C của dòng tiếp theo.
      copiedSheet.getRange(`B${currentRow}`).setValue(data[i][0]);
      copiedSheet.getRange(`C${currentRow + 1}`).setValue(data[i][1]);
      currentRow += 6; // Di chuyển đến ô bắt đầu của lần lặp tiếp theo.
    }
  }

  // Ghi dòng "Tp.HCM, ngày tháng năm Đại diện họp pháp của nhà thầu" vào dòng cuối cùng.
  copiedSheet.getRange(`A${currentRow}`).setValue("Tp.HCM, ngày tháng năm Đại diện họp pháp của nhà thầu");

  // Mở file kết quả.
  const url = copiedSpreadsheet.getUrl();
  Logger.log(`File mới đã được tạo: ${url}`);
  return url; // Trả về URL của file mới được tạo.
}

Để đoạn mã trên hoạt động, bạn cần điền vào TEMPLATE_FILE_ID_HERE bằng ID của file mẫu, và FOLDER_ID_HERE bằng ID của thư mục mà bạn muốn lưu file mới.

Và nếu bạn muốn biết thêm những mẹo nhỏ về công nghệ và AI, đừng ngần ngại ghé qua trituenhantao.io nhé! Không đảm bảo bạn sẽ trở thành lập trình viên siêu phàm, nhưng ít nhất bạn sẽ không bị 'lag' khi xử lý dữ liệu nữa!


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ử