javascript - 过滤来自谷歌脚本事件(e)的输入/数据
问题描述
我有以下脚本,它接受谷歌表单上的输入,用这些输入制作一个文档,然后发送一封附有文档的电子邮件。它工作正常,但我需要过滤一些响应,但我不知道如何过滤事件中的数据。
表格上的问题之一是询问人们想要什么样的文件:
现在,我只完成了第二个选项(Licença Especial em Pecúnia)的脚本。我需要从表单中过滤数据,所以当我选择第一个选项(Substituiçãode Chefia)时,它会从不同的模板生成不同的文档。现在,function afterSubmit(e)
在表单提交时触发。
请原谅 vars 和 consts 的葡萄牙语名称,我将这个问题的重要名称改为英语。
function afterSubmit(e) {
const info = e.namedValues;
const pdfFileLP = createPDFLP(info);
const url = e.namedValues['Anexos ao ofício'][0];
function getIdFromUrl(url) {return url.match(/[-\w]{25,}$/);};
var idAnexo = getIdFromUrl(url);
const nrof = e.namedValues['Numeração do ofício'][0];
function pdfAnexado(idAnexo,nrof) {return DriveApp.getFileById(idAnexo).setName("Anexos do ofício of. " + nrof + "-PGE/PRF.pdf");};
var pdfAnexo = pdfAnexado(idAnexo);
eprotocolo(e.namedValues['Expresso do solicitante'][0],nrof,pdfFileLP,pdfAnexo);
}
function eprotocolo(email,ofi,pdfFileLP,pdfAnexo){
var EmailTemp = HtmlService.createTemplateFromFile("mailLP");
EmailTemp.mail = email;
var htmlMessage = EmailTemp.evaluate().getContent();
GmailApp.sendEmail("estag.pedron@pge.pr.gov.br","Of. " + ofi + "-PGE/PRF",
"SEU EMAIL NÃO SUPORTA O FORMATO HTML, FAVOR RESPONDER ESTE E-MAIL PARA SOLUCIONAR O PROBLEMA OU ENTRAR EM CONTATO PELO TELEFONE (41)3281-6392.",{
from: "procuradoriafuncional@gmail.com", name: "Gerador de ofícios da PRF", htmlBody: htmlMessage,
replyTo: email, cc: email,
attachments: [pdfFileLP, pdfAnexo]
});
}
function createPDFLP(info) {
const pdfFolder = DriveApp.getFolderById("1mgNPhM9f2U0BWrDK0FAfCYyq968rJ3E8");
const tempFolder = DriveApp.getFolderById("1FfW3Jn9hHARpBU8t8szlQ2YwR9OPR1ZV");
const templateChefia = DriveApp.getFileById("1qP3A8O27Ms8OuybaqrQ6jQBB_PQpo-RhDU9xjIw_a44");
const templateLP = DriveApp.getFileById("1lRab5lPdbRcdl4gaI3zonFseE180cNu4-hWaovamerc");
const newTempFileLP = templateLP.makeCopy(tempFolder);
const openDocLP = DocumentApp.openById(newTempFileLP.getId());
const bodyLP = openDocLP.getBody();
bodyLP.replaceText("{of}", info['Numeração do ofício'][0]);
bodyLP.replaceText("{data}", info['Data do ofício'][0]);
bodyLP.replaceText("{serv}", info['Nome completo'][0]);
bodyLP.replaceText("{rg}", info['Número do RG'][0]);
bodyLP.replaceText("{autos}", info['Numero dos autos'][0]);
bodyLP.replaceText("{prazo}", info['Prazo'][0]);
bodyLP.replaceText("{procurador}", info['Procurador solicitante'][0]);
bodyLP.replaceText("{orgao}", info['GRHS de destino'][0]);
openDocLP.saveAndClose();
const blobPDFLP = newTempFileLP.getAs(MimeType.PDF);
const pdfFileLP = pdfFolder.createFile(blobPDFLP).setName("Of. " + info['Numeração do ofício'][0] + "-PGE/PRF.pdf");
tempFolder.removeFile(newTempFileLP);
return pdfFileLP;}
解决方案
如果有人好奇,我在最后做了一个简单的 if 语句:
function createPDFLP(info) {
const pdfFolder = DriveApp.getFolderById("1mgNPhM9f2U0BWrDK0FAfCYyq968rJ3E8");
const tempFolder = DriveApp.getFolderById("1FfW3Jn9hHARpBU8t8szlQ2YwR9OPR1ZV");
const templateChefia = DriveApp.getFileById("1qP3A8O27Ms8OuybaqrQ6jQBB_PQpo-RhDU9xjIw_a44");
const templateLP = DriveApp.getFileById("1lRab5lPdbRcdl4gaI3zonFseE180cNu4-hWaovamerc");
const tipo = info['Tipo de ofício'][0];
if(tipo == "Licença Especial em Pecúnia"){
const newTempFileLP = templateLP.makeCopy(tempFolder);
const openDocLP = DocumentApp.openById(newTempFileLP.getId());
const bodyLP = openDocLP.getBody();
bodyLP.replaceText("{of}", info['Numeração do ofício'][0]);
bodyLP.replaceText("{data}", info['Data do ofício'][0]);
bodyLP.replaceText("{serv}", info['Nome completo'][0]);
bodyLP.replaceText("{rg}", info['Número do RG'][0]);
bodyLP.replaceText("{autos}", info['Numero dos autos'][0]);
bodyLP.replaceText("{prazo}", info['Prazo'][0]);
bodyLP.replaceText("{procurador}", info['Procurador solicitante'][0]);
bodyLP.replaceText("{orgao}", info['GRHS de destino'][0]);
openDocLP.saveAndClose();
const blobPDFLP = newTempFileLP.getAs(MimeType.PDF);
const pdfFileLP = pdfFolder.createFile(blobPDFLP).setName("Of. " + info['Numeração do ofício'][0] + "-PGE/PRF.pdf");
tempFolder.removeFile(newTempFileLP);
return pdfFileLP;
} else if (tipo == "Substituição de Chefia") {
const newTempFileSC = templateChefia.makeCopy(tempFolder);
const openDocSC = DocumentApp.openById(newTempFileSC.getId());
const bodySC = openDocSC.getBody();
bodySC.replaceText("{of}", info['Numeração do ofício'][0]);
bodySC.replaceText("{data}", info['Data do ofício'][0]);
bodySC.replaceText("{servi}", info['Nome completo'][0]);
bodySC.replaceText("{rg}", info['Número do RG'][0]);
bodySC.replaceText("{autos}", info['Numero dos autos'][0]);
bodySC.replaceText("{prazo}", info['Prazo'][0]);
bodySC.replaceText("{procurador}", info['Procurador solicitante'][0]);
bodySC.replaceText("{orgao}", info['GRHS de destino'][0]);
bodySC.replaceText("{periodo}", info['Período que o autor alega que ocupou cargo de chefia'][0]);
openDocSC.saveAndClose();
const blobPDFSC = newTempFileSC.getAs(MimeType.PDF);
const pdfFileLP = pdfFolder.createFile(blobPDFSC).setName("Of. " + info['Numeração do ofício'][0] + "-PGE/PRF.pdf");
tempFolder.removeFile(newTempFileSC);
return pdfFileLP;
}
}
推荐阅读
- javascript - JS 类方法未执行(Rails active_storage)
- design-patterns - 实现在对象注册表中注册自己的模式
- javascript - 如何在 javascript 中使用 get 方法
- python - 如何重命名列以获得一行列名?
- c++ - 浮点乘法可以在 C++ 中引发异常吗?
- node.js - Express & Firebase - 无法在重定向前设置标头
- python - 有人可以解释一下这里发生的调用堆栈吗?它调用 D、B、C、A。你能提供它是如何发生的吗
- mysql - 子查询中的mysql最小值和最大值
- java - 如何使用 android studio 在本地存储应用数据?
- c# - SWIG/C#:转换 std::vector
到字节[]