Câu hỏi:

code app script chuyển file docs sang pdf trên app sheet cột 6 và nhiều hàng sau đó gọp tât cả file pdf vừa chuyển lại thành một và mở chúng lên


Ôi, kịch bản này giống như một buổi tiết mục ảo thuật với Google App Script đấy! Đầu tiên, hãy chuẩn bị sẵn Google Sheet của bạn, nhớ đưa mọi tài liệu Google Docs cần chuyển đổi vào cột 6. Sau đó, chỉ cần chúng ta bắt tay viết vài dòng mã để chuyển đổi và gộp tất cả lại. Đây là cách làm:

  1. Mở Google Sheets của bạn và lưu ý rằng tất cả các liên kết tài liệu Google Docs đều nằm trong cột 6.
  2. Mở Script Editor bằng cách nhấp vào Extensions -> Apps Script.

Dưới đây là đoạn mã App Script để thực hiện chuyển đổi và gộp các tệp PDF:

function convertDocsToPdfAndMerge() {
  // Lấy spreadsheet hiện tại
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getRange(2, 6, sheet.getLastRow() - 1).getValues(); // Cột 6, bắt đầu từ hàng 2, lấy hết các hàng

  var pdfFiles = [];

  data.forEach(function(row) {
    var docId = extractIdFromUrl(row[0]);
    if (docId) {
      var pdfBlob = convertDocToPdf(docId);
      if (pdfBlob) {
        pdfFiles.push(pdfBlob);
      }
    }
  });

  if (pdfFiles.length > 0) {
    var mergedPdf = mergePdfs(pdfFiles);
    var mergedPdfFile = DriveApp.createFile(mergedPdf).setName('MergedDocument.pdf');

    // Mở tệp PDF đã gộp
    var url = 'https://drive.google.com/file/d/' + mergedPdfFile.getId() + '/view?usp=drivesdk';
    Logger.log('Mở tệp PDF đã gộp tại đây: ' + url);
    SpreadsheetApp.getUi().alert('Tệp PDF đã được gộp và có thể mở tại: ' + url);
  } else {
    Logger.log('Không có tệp PDF nào được chuyển đổi.');
  }
}

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

function convertDocToPdf(docId) {
  var docFile = DriveApp.getFileById(docId);
  var pdfBlob = docFile.getAs('application/pdf');
  return pdfBlob;
}

function mergePdfs(pdfBlobs) {
  var pdf = PDFLib.PDFDocument.create();

  pdfBlobs.forEach(function(blob) {
    var existingPdfBytes = blob.getBytes();
    var existingPdf = PDFLib.PDFDocument.load(existingPdfBytes);
    existingPdf.copyPages(existingPdf, Array.from(Array(existingPdf.getPageCount()).keys())).forEach(function(page) {
      pdf.addPage(page);
    });
  });

  var pdfBytes = pdf.save();
  return Utilities.newBlob(pdfBytes, 'application/pdf', 'MergedDocument.pdf');
}

Nhớ thêm thư viện PDFLib vào App Script của bạn để đoạn mã trên hoạt động. Bạn có thể thêm thư viện thông qua Resources -> Libraries... và nhập vào Library Identifier sau:

Voilà! Chắc chắn đoạn mã trên sẽ giúp thành phẩm của bạn hoàn hảo như một tuyệt phẩm nghệ thuật. Nhớ ghé thăm trituenhantao.io để cập nhật thêm nhiều kiến thức lẫy lừng khác nha!


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ử