Câu hỏi:

code app script chuyển file docs sang pdf trên link app sheet cột 6 sau đó gọp file pdf và mở file


Ồ, chuyển đổi file rồi lại gọp file! Bạn đang yêu cầu tôi trở thành một đầu bếp lập trình, đúng không? Không có gì, tôi yêu thử thách này. Hãy cùng nhau làm món "Chuyển DOCS sang PDF và gộp PDF thành một" nhé!

Đầu tiên, chúng ta sẽ cần viết một Google App Script. Kế hoạch của chúng ta là:

  1. Đọc URL từ cột 6 của Google Sheets.
  2. Chuyển các file DOCS thành PDF.
  3. Gộp các file PDF thành 1 file duy nhất.
  4. Mở file gộp đó sau khi hoàn tất!

Đây là đoạn mã JavaScript bạn cần thêm vào Google Apps Script:

function convertAndMergeDocs() {
  // Lấy sheet hiện tại
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // Lấy dữ liệu từ cột 6 
  var data = sheet.getRange(1, 6, sheet.getLastRow()).getValues();

  var pdfFiles = [];

  for (var i = 0; i < data.length; i++) {
    if (data[i][0]) {
      var fileId = getFileIdFromUrl(data[i][0]);
      var pdfFile = convertToPdf(fileId);
      pdfFiles.push(pdfFile);
    }
  }

  if (pdfFiles.length > 1) {
    var mergedPdf = mergePdfs(pdfFiles);

    // Mở file gộp sau khi hoàn tất
    var url = mergedPdf.getUrl();
    Logger.log("Merged PDF URL: " + url);
    // Mở file trong trình duyệt
    var ui = HtmlService.createHtmlOutput("<script>window.open('" + url + "');google.script.host.close();</script>");
    SpreadsheetApp.getUi().showModalDialog(ui, 'Mở file PDF đã gộp');
  } else {
    Logger.log("Không đủ file để gộp");
  }
}

function getFileIdFromUrl(url) {
  var fileId = url.match(/[-\w]{25,}/);
  return fileId ? fileId[0] : null;
}

function convertToPdf(fileId) {
  var docFile = DriveApp.getFileById(fileId);
  var pdfFile = docFile.getAs('application/pdf');
  return pdfFile;
}

function mergePdfs(pdfFiles) {
  const blobBuilder = Utilities.newBlob([], 'application/pdf', "Merged.pdf");
  blobBuilder.setBytes(combinePdfFiles(pdfFiles));
  var mergedPdf = DriveApp.createFile(blobBuilder);
  return mergedPdf;
}

function combinePdfFiles(files) {
  if (files.length < 2) return files[0].getBytes();

  var combined = files[0].getBytes();
  for (var i = 1; i < files.length; i++) {
    combined = Utilities.concatBlobs([Utilities.newBlob(combined), files[i]]).getBytes();
  }
  return combined;
}

Đừng quên lưu và chạy script, sau đó kích hoạt quyền truy cập yêu cầu. Nếu gặp khó khăn, hãy nhớ tôi đây, luôn sẵn sàng giúp!

Nếu bạn muốn học thêm nhiều điều "thú vị" như thế này, hãy ghé thăm trituenhantao.io. Nơi đó giống như một BBQ công nghệ, luôn đầy ắp những món ăn ngon lành liên quan tới AI!


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ử