Google 表单到 Pdf 添加图像

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

我通过 Google 文档将通过 Google 表单输入的信息传输为 pdf。文本已添加,但我不知道如何添加图像。文档文件id等都存在于代码中。提交表单后,添加的图片为 doc id =

1I63WRYGP169inM1TvCJIaMSTBozaNZygGrdvPLcTLrechAzrVZWmjWKVuMTKM92vZDV7p1JU

,但我找不到如何做。

  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,9).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]

           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)

      })
}

function CreatePDF(docFile,TempFolder,PDFFolder,item1,item2,item3,item4,item5,item6,item7,item8,item9){
var tempFile = docFile.makeCopy(TempFolder)
var tempDoc = DocumentApp.openById(tempFile.getId())
    tempDoc.getBody().replaceText("{MAĞAZA ADI}",item2)
    tempDoc.getBody().replaceText("{DENETİMİ YAPAN}",item3)
    tempDoc.getBody().replaceText("{İLGİLİ HAFTA}",item4)
    tempDoc.getBody().replaceText("{MAĞAZA PUANI}",item5)
    tempDoc.getBody().replaceText("{DENETİM TARİHİ}",item6)
    tempDoc.getBody().replaceText("{DENETİM BAŞLAMA SAATİ}",item7)
    tempDoc.getBody().replaceText("{DENETİM BİTİŞ SAATİ}",item8)
    tempDoc.getBody().replaceText("{BİR ÖNCEKİ DENETİMİ YAPAN}",item9)
    tempDoc.saveAndClose()
   TempFolder.removeFile(tempFile)

var PdfContent = tempFile.getAs(MimeType.PDF)
var PdfFile = PDFFolder.createFile(PdfContent).setName(item2)

MailApp.sendEmail(item1, item2 + ' ŞUBE', 'DENETİM FORMU..', {
  attachments: [PdfFile.getAs(MimeType.PDF)]
});
} ```
google-sheets google-apps-script
1个回答
0
投票

根据您提供的示例电子表格、文档和您的脚本,以下修改如何?

修改后的脚本:

在使用此脚本之前,请设置您的电子表格 ID、文档 ID 和文件夹 ID。并且,请再次确认工作表名称和占位符。因为我复制你的脚本时,出现了一些乱码。

function myFunction() {
  var docFile = DriveApp.getFileById('###');
  var TempFolder = DriveApp.getFolderById('###');
  var PDFFolder = DriveApp.getFolderById('###');
  var ss = SpreadsheetApp.openById('###');

  var sh = ss.getSheetByName('Form Yanıtları 1');
  var data = sh.getRange(ss.getLastRow(), 1, 1, 11).getValues()
  data.forEach(r => {
    var item1 = r[1]//BİRİNCİ SÜTUN
    var item2 = r[2]//İKİNCİ SÜTUN
    var item3 = r[3]//ÜÇÜNCÜ SÜTN
    var item4 = r[4]//DÖRDÜNCÜ
    var item5 = r[5]//BEŞİNCİ
    var item6 = r[6]//ALTINCI
    var item7 = r[7]//YEDİNCİ
    var item8 = r[8]//SEKİZİNCİ
    var item9 = r[9]//DOKUZUNCU
    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, r[10].split("=")[1]);
  })
}

function CreatePDF(docFile, TempFolder, PDFFolder, item1, item2, item3, item4, item5, item6, item7, item8, item9, id) {
  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);

  // Ref: https://tanaikech.github.io/2018/08/20/replacing-text-to-image-for-google-document-using-google-apps-script/ Author: me
  // Ref: https://stackoverflow.com/q/51912364
  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();
      img.setWidth(width);
      img.setHeight(width * h / w);
    }
    return next;
  };
  replaceTextToImage(body, "{IMAGE1}", DriveApp.getFileById(id).getBlob(), 500);
  tempDoc.saveAndClose();
  TempFolder.removeFile(tempFile);
  var PdfContent = tempFile.getAs(MimeType.PDF);
  var PdfFile = PDFFolder.createFile(PdfContent).setName(item2);
  MailApp.sendEmail(item1, item2 + ' ŞUBE', 'DENETİM FORMU..', { attachments: [PdfFile.getBlob()] });
}
  • 运行此脚本时,将从工作表的最后一行检索值。并且,使用模板文档创建 PDF 文件。并且,会发送一封电子邮件,其中包含 PDF 文件。

注:

  • 当我使用您提供的电子表格和文档测试上述脚本时,没有发生错误。我确认了一封电子邮件,其中包含正确创建的 PDF 文件。如果更改电子表格和文档,该脚本可能无法使用。请注意这一点。
© www.soinside.com 2019 - 2024. All rights reserved.