我正在开发一个google表单,其中包含一些文本字段和图像字段。现在,在提交后,我能够生成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;
}现在,我正在寻找解决方案,以便将答辩人在谷歌表单上提交的图像插入到同一文档中,并将自动邮件发送给答辩人。
类似的问题也被问到这里
发布于 2021-10-13 14:41:43
为图像创建一个占位符,并通过从上传图像的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();
...
}此代码所做的是:
换句话说,文本占位符将被图像替换。
https://stackoverflow.com/questions/69552686
复制相似问题