如何在 Appscript 中将 PDF 页面合并为一个长页面

问题描述 投票:0回答:1

我通过 Google 文档将通过 Google 表单输入的信息传输为 pdf。 提交表单后,通过Google文档自动生成大量信息,并且页面布局根据照片尺寸而扭曲,因此我想将所有页面变成一个长页面作为PDF。 如何在 Apps 脚本中将 PDF 页面合并为一个长页面?

  function myFunction() {
  var docFile = DriveApp.getFileById('1cc1xjtE6WyYjVVwY95earN6xht2mP01EEPhAyC-yFHE');
  var TempFolder = DriveApp.getFolderById('1vaXCrOJAg1x2JCzEng9nSPn6om8dWmib');
  var PDFFolder = DriveApp.getFolderById('16r-564UEEuBcyfTIX0xnjJRk6bFJjzL1');
  var ss = SpreadsheetApp.openById('1kZFrbnjgVnq7wB4mFYAMCjFiDB2PAfkmbYGvhLg_U00');

  var sh = ss.getSheetByName('Form Yanıtları 1');
  var data = sh.getRange(ss.getLastRow(), 1, 1, 48).getValues();
  data.forEach(r => {
    var item1 = r[1]; 
    var item2 = r[2]; 
    var item3 = r[3]; 
    var item4 = r[4]; 
    var item5 = r[5]; 
    var item6 = r[6]; 
    var item7 = r[7]; 
    var item8 = r[8]; 
    var item9 = r[9]; 
    var item10 = r[10]; 
    var item12 = r[12]; 
    var item13 = r[13]; 
    var item16 = r[16]; 
    var item19 = r[19]; 
    var item22 = r[22]; 
    var item25 = r[25];
    var item28 = r[28];
    var item31 = r[31];
    var item34 = r[34];
    var item37 = r[37];
    var item40 = r[40];
    var item42 = r[42];
    var item44 = r[44];
    item6 = LanguageApp.translate(Utilities.formatDate(item6, 'GMT+7', 'dd MMMM yyyy'), 'en', 'tr').split(' ').map((a, i) => { if (i != 2 || parseInt(a) > 2100) { return a }; a = parseInt(a); return a }).join(' ');
    item7 = Utilities.formatDate(item7, 'GMT+3', 'HH:mm'); // Denetim başlama saati
    item8 = Utilities.formatDate(item8, 'GMT+3', 'HH:mm'); // Denetim bitiş saati

    CreatePDF(docFile, TempFolder, PDFFolder, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, 
    r[11].split("=")[1], 
    item12, 
    item13, 
    r[14].split("=")[1], 
    r[15].split("=")[1], 
    item16, 
    r[17].split("=")[1], 
    r[18].split("=")[1],
    item19, 
    r[20].split("=")[1], 
    r[21].split("=")[1],
    item22, 
    r[23].split("=")[1], 
    r[24].split("=")[1],
    item25, 
    r[26].split("=")[1], 
    r[27].split("=")[1],
    item28, 
    r[29].split("=")[1], 
    r[30].split("=")[1],
    item31, 
    r[32].split("=")[1], 
    r[33].split("=")[1],
    item34, 
    r[35].split("=")[1], 
    r[36].split("=")[1],
    item37, 
    r[38].split("=")[1], 
    r[39].split("=")[1],
    item40, 
    r[41].split("=")[1],
    item42, 
    r[43].split("=")[1],
    item44, 
    r[45].split("=")[1], 
    r[46].split("=")[1], 
    r[47].split("=")[1]);
  });
    
}

function CreatePDF(docFile, TempFolder, PDFFolder, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, id1, item12, item13, id2,id3, item16,id4,id5,item19,id6,id7,item22,id8,id9,item25,id10,id11,item28,id12,id13,item31,id14,id15,item34,id16,id17,item37,id18,id19,item40,id20,item42,id21,item44,id22,id23,id24) {
  var tempFile = docFile.makeCopy(TempFolder);
  var tempDoc = DocumentApp.openById(tempFile.getId());
  var body = tempDoc.getBody();
  body.replaceText("{MAĞAZA ADI}", item2);
  body.replaceText("{DENETİMİ YAPAN}", item3);
  body.replaceText("{İLGİLİ HAFTA}", item4);
  body.replaceText("{MAĞAZA PUANI}", item5);
  body.replaceText("{DENETİM TARİHİ}", item6);
  body.replaceText("{DENETİM BAŞLAMA SAATİ}", item7);
  body.replaceText("{DENETİM BİTİŞ SAATİ}", item8);
  body.replaceText("{BİR ÖNCEKİ DENETİMİ YAPAN}", item9);
  body.replaceText("{MAĞAZANIN MESAİ PROGRAMI UYGUN MU}", item10);
  body.replaceText("{PERSONEL TUTUM VE DAVRANIŞLARI}", item12);
  body.replaceText("{KAHVE BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item13);
  body.replaceText("{KURUYEMİŞ BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item16);
  body.replaceText("{LOKUM BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item19);
  body.replaceText("{BAHARAT BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item22);
  body.replaceText("{ORTA ALAN GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item25);
  body.replaceText("{MAĞAZA ÖNÜ VE LEBLEBİ BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item28);
  body.replaceText("{KASA BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item31);
  body.replaceText("{DEPO BÖLÜMÜ GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item34);
  body.replaceText("{MAĞAZA TEMİZLİK GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item37);
  body.replaceText("{MAĞAZADA ZAİYAT BULUNUYOR MU GÖRÜŞ VE ÖNERİLERİNİZ NELERDİR}", item40);
  body.replaceText("{BİR ÖNCEKİ HAFTA BİLGİLENDİRMELERİ İŞLENMİŞ Mİ}", item42);
  body.replaceText("{DİĞER YORUMLAR}", item44);
  var replaceTextToImage = function (body, searchText, image, width) {
  var next = body.findText(searchText);
  if (!next) return;
  var r = next.getElement();
  r.asText().setText("");
  var img = r.getParent().asParagraph().insertInlineImage(0, image);
  if (width && typeof width == "number") {
    var w = img.getWidth();
    var h = img.getHeight();
    var newWidth = width;
    var newHeight = (width * h) / w;
    if (h > w) {
      newHeight = width;
      newWidth = (width * w) / h;
    }
    img.setWidth(newWidth);
    img.setHeight(newHeight);
  }
  return next;
};

  replaceTextToImage(body, "{IMAGE1}", DriveApp.getFileById(id1).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE2}", DriveApp.getFileById(id2).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE3}", DriveApp.getFileById(id3).getBlob(), 400);
  replaceTextToImage(body, "{IMAGE4}", DriveApp.getFileById(id4).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE5}", DriveApp.getFileById(id5).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE6}", DriveApp.getFileById(id6).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE7}", DriveApp.getFileById(id7).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE8}", DriveApp.getFileById(id8).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE9}", DriveApp.getFileById(id9).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE10}", DriveApp.getFileById(id10).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE11}", DriveApp.getFileById(id11).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE12}", DriveApp.getFileById(id12).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE13}", DriveApp.getFileById(id13).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE14}", DriveApp.getFileById(id14).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE15}", DriveApp.getFileById(id15).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE16}", DriveApp.getFileById(id16).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE17}", DriveApp.getFileById(id17).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE18}", DriveApp.getFileById(id18).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE19}", DriveApp.getFileById(id19).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE20}", DriveApp.getFileById(id20).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE21}", DriveApp.getFileById(id21).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE22}", DriveApp.getFileById(id22).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE23}", DriveApp.getFileById(id23).getBlob(), 500);
  replaceTextToImage(body, "{IMAGE24}", DriveApp.getFileById(id24).getBlob(), 500);

  tempDoc.saveAndClose()
  tempFile.setTrashed(true);
  
  var PdfContent = tempFile.getAs(MimeType.PDF);
  var PdfFile = PDFFolder.createFile(PdfContent).setName(item2 + ' ' + item6 + ' DENETİM RAPORU');
  MailApp.sendEmail(item1, item2 + ' ŞUBE', 'DENETİM FORMU..', { attachments: [PdfFile.getBlob()] });
} 
google-sheets google-apps-script
1个回答
0
投票

那么,调整Google文档的页面高度怎么样?如果您的显示脚本被修改,请修改您的函数

CreatePDF
如下。

来自:

var body = tempDoc.getBody();

致:

var body = tempDoc.getBody().setPageHeight(10000);
  • 好像默认值是
    841.89
    点。在此修改中,
    10000
    用于页面高度。通过此修改,一页的页面高度被扩大。所以,当这个Document导出为PDF数据时,PDF数据的页面高度很大。
  • 在此修改中,
    10000
    是样本值。请根据您的实际情况调整该值。
  • 如果您还想调整页面宽度,请将
    var body = tempDoc.getBody().setPageHeight(10000)
    修改为
    var body = tempDoc.getBody().setPageHeight(10000).setPageWidth(width)
    。请设置
    height
    width
    的值。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.