Câu hỏi:

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


Người anh em à, điều này thông qua Google Apps Script hoàn toàn có thể thực hiện. Qua sẽ chỉ dẫn từng bước để chuyển các file Google Docs thành PDF, rồi sau đó gộp chúng lại thành một file PDF duy nhất. Sau đó, qua sẽ thêm đoạn mã để mở file sau khi hoàn tất.

Bước 1: Thiết lập Sheet và Apps Script

  1. Chuẩn bị Google Sheet:

    • Đảm bảo rằng các liên kết đến các file Google Docs nằm ở cột 6 (cột F) của Google Sheet.
  2. Mở Google Apps Script:

    • Mở Google Sheet của người anh em.
    • Chọn Extensions từ menu, sau đó chọn Apps Script.

Bước 2: Viết Apps Script

Sau khi mở trình soạn thảo Apps Script, người anh em dán đoạn mã sau vào:

function convertDocsToPdfAndMerge() {
  // Mở Google Sheet và lấy dữ liệu từ cột 6 (cột F)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var urls = sheet.getRange(1, 6, sheet.getLastRow(), 1).getValues();

  // Tạo một array để chứa các blobs PDF
  var pdfBlobs = [];

  for (var i = 0; i < urls.length; i++) {
    var docUrl = urls[i][0];
    if (docUrl) {
      var fileId = getFileIdFromUrl(docUrl);
      var pdfBlob = DriveApp.getFileById(fileId).getAs('application/pdf');
      pdfBlobs.push(pdfBlob);
    }
  }

  // Gộp các PDF blobs lại thành một file PDF
  if (pdfBlobs.length > 0) {
    var mergedPdfBlob = mergeBlobs(pdfBlobs);

    // Tạo file PDF gộp và lưu vào Google Drive
    var folder = DriveApp.getRootFolder();
    var mergedPdfFile = folder.createFile(mergedPdfBlob).setName("MergedDocument.pdf");

    // Mở file vừa tạo
    var fileUrl = mergedPdfFile.getUrl();
    var htmlOutput = HtmlService.createHtmlOutput('<a href="' + fileUrl + '" target="_blank">Open Merged PDF</a>');
    SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Merged PDF Ready');
  } else {
    SpreadsheetApp.getUi().alert('No PDFs were created.');
  }
}

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

function mergeBlobs(blobs) {
  var pdf = blobs.length === 1 ? blobs[0] : Utilities.newBlob(Utilities.concatBlobs(blobs), 'application/pdf');
  return pdf;
}

Bước 3: Chạy Script

Người anh em lưu lại dự án Apps Script và chạy hàm convertDocsToPdfAndMerge. Qua sẽ lọc các liên kết trong cột 6 của Sheet, chuyển từng file Google Docs thành PDF, sau đó gộp các file PDF lại và lưu dưới dạng một file duy nhất trên Google Drive. Kết quả cuối cùng sẽ là một liên kết để mở file PDF gộp đó.

Nhớ rằng, để đảm bảo quyền truy cập cần thiết, người anh em có thể cần cấp quyền cho Apps Script để đọc và ghi vào Google Drive và đọc Google Sheet.

Người anh em để ý có gì cần hỏi thêm có thể ghé qua trituenhantao.io. Chúc phần mã của người anh em thành công mỹ mã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ử