我需要调整下面的脚本,以便在提交表单时,回复电子邮件会以千米为单位显示原点(partida
)和目标(destino
)之间的行车距离。
var docTemplate = "1FteemZEe52j244XldbZnE7qKHNiZFEoKYZK1xNge3Cs";
var docName = "AUTORIZAÇÃO PARA RETIRADA DE VEÍCULO";
// Create the function
function onFormSubmit(e) {
//Get the variables
var email_address = "user@example.com";
var nome = e.values[2];
var carro = e.values[3];
var data = e.values[4];
var hora = e.values[6];
var destino = e.values[7];
var motivo = e.values[5];
var partida = e.values[8];
// Copy and start temp document
var copyId = DriveApp.getFileById(docTemplate)
.makeCopy(docName+' para '+nome)
.getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
copyBody.replaceText('keyNome', nome);
copyBody.replaceText('keyCarro', carro);
copyBody.replaceText('keyData', data);
copyBody.replaceText('keyHora', hora);
copyBody.replaceText('keyDestino', destino);
copyBody.replaceText('keyMotivo',motivo);
// I need put here the simple calculator for distance in KM from variable partida and variable destino
// Salve the temp document
copyDoc.saveAndClose();
// Convert in PDF the temp document and send email
var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
var subject = "AUTORIZAÇÃO DE VEÍCULO";
var body = "Esta é a autorização do(a) " + nome + "";
MailApp.sendEmail(email_address, subject, body, {htmlBody: body, attachments: pdf});
// Delete the temp document
DriveApp.getFileById(copyId).setTrashed(true);
}
答案 0 :(得分:0)
计算驾驶距离的功能在Google Apps脚本Quickstart: Macros, Menus, and Custom Functions中显示。接受多个航点的改编版本显示在Looking for distance between multiple points in a googlesheets script。
中如果包含这些功能,您可以像这样修改代码:
...
copyBody.replaceText('keyDestino', destino);
copyBody.replaceText('keyMotivo',motivo);
// Calculate distance in KM from partida to destino
var distancia = drivingDistance(partida, destino) / 1000;
copyBody.replaceText('keyDistancia',distancia);
// Save the temp document
copyDoc.saveAndClose();
...
如果您希望格式化计算,请使用Utilities.formatString()
。
答案 1 :(得分:0)
我的代码功能正常!它的工作正常! Mogsdad,“vocêéocara!”。非常感谢!
// Pega um template do Google Docs e nomeia
var docTemplate = "1FteemZEe52j244XldbZnE7qKHNiZFEoKYZK1xNge3Cs";
var docName = "AUTORIZAÇÃO PARA RETIRADA DE VEÍCULO";
// Quando o formulário é enviado (lembre-se de acionar uma trigger para que este código funcione)
function onFormSubmit(e) {
//Pega as informações do formulário e organiza em variáveis. Note que a posição de cada variável depende da coluna da planilha
var email_address = "user@email.com.br";
var nome = e.values[2];
var carro = e.values[3];
var data = e.values[4];
var hora = e.values[6];
var destino = e.values[7];
var motivo = e.values[5];
var partida = e.values[8];
// Pela o modelo do documento e faz uma cópia temporária
var copyId = DriveApp.getFileById(docTemplate)
.makeCopy(docName+' para '+nome)
.getId();
// Inicializa o documento temporário
var copyDoc = DocumentApp.openById(copyId);
// Pega o corpo do documento
var copyBody = copyDoc.getActiveSection();
// Troca pelas palavras chaves do documento cada variável
copyBody.replaceText('keyNome', nome);
copyBody.replaceText('keyCarro', carro);
copyBody.replaceText('keyData', data);
copyBody.replaceText('keyHora', hora);
copyBody.replaceText('keyDestino', destino);
copyBody.replaceText('keyMotivo',motivo);
// Obtem a localização e calcula a distancia em Km por carro entre o ponto de partida e destino
function getDirections_(partida, destino) {
var directionFinder = Maps.newDirectionFinder();
directionFinder.setOrigin(partida);
directionFinder.setDestination(destino);
var directions = directionFinder.getDirections();
if (directions.routes.length == 0) {
throw 'Não foi possível calcular a distancia entre esses endereços.';
}
return directions;
}
function drivingDistance(partida, destino) {
var directions = getDirections_(partida, destino);
return directions.routes[0].legs[0].distance.value;
}
var distancia = drivingDistance(partida, destino) / 1000;
// Salva e fecha o documento temporário
copyDoc.saveAndClose();
// Converte o documento temporário em arquivo PDF
var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
// Anexa o PDF e envia por email
var subject = "AUTORIZAÇÃO DE VEÍCULO";
var body = "Esta é a autorização do(a) " + nome + ". O total de kilometros é: " + distancia;
MailApp.sendEmail(email_address, subject, body, {htmlBody: body, attachments: pdf});
// Deleta o documento temporário
DriveApp.getFileById(copyId).setTrashed(true);
}