如何生成PDF的形象反应在谷歌提交形式和汽车电子邮件发送给被申请人以附件为PDF



我正在开发一个谷歌表单,其中有一些文本字段和图像字段。现在提交后,我能够生成文本响应的pdf。此外,回复的pdf将发送到应答者的电子邮件。

我已经参考了这个视频教程。

用于文本的脚本:

function afterFormSubmit(e) {
const info = e.namedValues;
const pdfFile=createPDF(info);
const entryRow=e.range.getRow();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("People").getRange(entryRow,6).setValue(pdfFile.getUrl());
sendEmail(e.namedValues["Email"], pdfFile);    
}
function sendEmail(email, pdfFile){
GmailApp.sendEmail(email, "Succesfuly filled the form ", {attachments:[pdfFile],name:"Test Case" });
}
function createPDF(info){
const pdfFolder= DriveApp.getFolderById("pdfFolderID");
const tempFolder=DriveApp.getFolderById("tempFolderID");
const templateDoc=DriveApp.getFileById("TemplateDOc");
const newTempFile= templateDoc.makeCopy(tempFolder);
const openDoc= DocumentApp.openById(newTempFile.getId());
const body=openDoc.getBody();
body.replaceText("{Fn}", info['Name'][0]);
openDoc.saveAndClose();
const blobPDF= newTempFile.getAs(MimeType.PDF);
const pdfFile= pdfFolder.createFile(blobPDF).setName(info['Name'][0]+  "_Application for the post" );
tempFolder.removeFile(newTempFile);
return pdfFile;    
}

现在我正在寻找解决方案,以便答辩人在谷歌表单上提交的图像应插入到同一文档中,并自动发送邮件给答辩人。

这里也有类似的问题

为图像创建一个占位符,并通过从上传图像的url检索到的实际图像blob来替换它

假设图像的URL包含在对问题"Image"的响应中并且模板中的占位符名为"{Image}",则将function createPdf修改为:

function createPDF(info){
...
const body=openDoc.getBody();
body.replaceText("{Fn}", info['Name'][0]);
var imageUrl = info['Image'][0];
var imagePlaceholder = "{Image}";
var id = imageUrl.match(/[w_-]{25,}/)[0];
var img = DriveApp.getFileById(id);
var position = body.findText(imagePlaceholder);
var element = position.getElement();
element.asText().setText("");
element.getParent().asParagraph().insertInlineImage(0, img.getBlob());
openDoc.saveAndClose();
...   
}

这段代码的作用是:

  • 本地化与上传图片URL对应的命名值
  • 通过DriveApp
  • 打开URL获取图像blob
  • 在模板中找到为图像保留的占位符
  • 将文本替换为空字符串
  • 检索包含占位符
  • 的元素
  • 获取元素的父段
  • 插入图像blob到父段落

换句话说,文本占位符被图像替换。

最新更新