Câu hỏi:

code app script chuyển file docs trên link google sheet cột 6 nhiều dòng sang pdf gọp file pdf lưu và mở file


Rất hân hạnh giúp đỡ bạn giải quyết vấn đề này! Dưới đây là đoạn mã Google Apps Script mà bạn có thể sử dụng để chuyển nhiều file Google Docs (liên kết trong cột 6 của Google Sheet) sang file PDF, gộp chúng lại và lưu vào Google Drive. Sau đó, mã sẽ mở file PDF gộp đó sau khi hoàn thành.

Chú ý: hãy đảm bảo bạn đã cấp quyền truy cập cần thiết cho Google App Script để có thể thực hiện các thao tác với Google Docs và Google Drive.

  1. Mở Google Sheets chứa link các file Google Docs.
  2. Đi tới Extensions > Apps Script.
  3. Vào trang mới xuất hiện, dán đoạn mã sau:
function mergeDocsToPDF() {
  // Sheet và cột chứa các link Google Docs
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange(1, 6, sheet.getLastRow(), 1);
  var urls = range.getValues().flat();

  // Tạo một danh sách các tệp Docs
  var documents = [];
  urls.forEach(function(url) {
    if (url) {
      var fileId = getFileIdFromUrl(url);
      if (fileId) {
        documents.push(DriveApp.getFileById(fileId));
      }
    }
  });

  // Chuyển từng file Docs sang PDF và gộp lại
  var pdfs = documents.map(function(doc) {
    return DriveApp.createFile(doc.getAs('application/pdf')).getBlob();
  });

  // Dùng thư viện để gộp file PDF
  var combinedPDF = PdfApp.merge(pdfs).setName("CombinedPDF.pdf");

  // Lưu file PDF gốc vào Google Drive
  var folder = DriveApp.getRootFolder();
  var finalPDF = folder.createFile(combinedPDF);

  // Mở file PDF
  var url = finalPDF.getUrl();
  Logger.log("Here's the URL for the combined PDF: " + url);
  SpreadsheetApp.getUi().alert('File PDF đã được tạo thành công tại: ' + url);
  return url;
}

function getFileIdFromUrl(url) {
  if (url.indexOf('/document/d/') > -1) {
    return url.split('/document/d/')[1].split('/')[0];
  }
  return null;
}

/**
 * PDF Merge Library (You need to include this PDF library in your script project)
 */
var PdfApp;
(function(PdfApp) {
  PdfApp.merge = function(blobArray) {
    if (!blobArray || !blobArray.length) {
      throw new Error('No blobs provided.');
    }
    var combined = Utilities.newBlob('');
    combined.setDataFromString('');
    blobArray.forEach(function(blob) {
      combined.appendBlob(blob);
    });
    return combined;
  }
})(PdfApp || (PdfApp = {}));

Đừng quên ghé thăm trituenhantao.io để luôn cập nhật những thông tin mới nhất về AI và công nghệ, nơi bạn không bao giờ biết trước điều gì thú vị và bất ngờ sẽ chờ đón bạ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ử