Google apps script 提交表格时,以公里为单位计算行驶距离
我需要调整下面的脚本,以便在提交表单时,响应电子邮件以公里为单位指示起点(Google apps script 提交表格时,以公里为单位计算行驶距离,google-apps-script,google-forms,Google Apps Script,Google Forms,我需要调整下面的脚本,以便在提交表单时,响应电子邮件以公里为单位指示起点(partida)和终点(destino)之间的行驶距离 var docTemplate=“1FteemZEe52j244XldbZnE7qKHNiZFEoKYZK1xNge3Cs”; var docName=“AUTORIZAÃO PARA RETIRADA DE VEÍCULO”; //创建函数 函数onFormSubmit(e){ //获取变量 var电子邮件地址=”user@example.com"; var nom
partida
)和终点(destino
)之间的行驶距离
var docTemplate=“1FteemZEe52j244XldbZnE7qKHNiZFEoKYZK1xNge3Cs”;
var docName=“AUTORIZAÃO PARA RETIRADA DE VEÍCULO”;
//创建函数
函数onFormSubmit(e){
//获取变量
var电子邮件地址=”user@example.com";
var nome=e.值[2];
var carro=e.值[3];
var数据=e.值[4];
var hora=e.值[6];
var destino=e.值[7];
var motivo=e.值[5];
var partida=e.值[8];
//复制并启动临时文档
var copyId=DriveApp.getFileById(docTemplate)
.makeCopy(文件名+段落+名称)
.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);
replaceText('keyMotivo',motivo);
//我需要在这里放一个简单的计算器,计算从可变partida到可变destino的距离,单位为KM
//拯救临时文件
copyDoc.saveAndClose();
//以PDF格式转换临时文档并发送电子邮件
var pdf=DriveApp.getFileById(copyId.getAs(“application/pdf”);
var subject=“AUTORIZAÃO DE VEÍCULO”;
var body=“Estaéa autorizaço do(a)”+nome+”;
发送电子邮件(电子邮件地址,主题,正文,{htmlBody:body,附件:pdf});
//删除临时文档
DriveApp.getFileById(copyId).setTrashed(true);
}
谷歌应用程序脚本中提供了一个计算行驶距离的函数。中显示了接受多个航路点的自适应版本
如果包含这些函数中的任何一个,您可以按如下方式修改代码:
。。。
copyBody.replaceText('keyDestino',destino);
replaceText('keyMotivo',motivo);
//计算从partida到destino的距离(以KM为单位)
var Distancea=行驶距离(partida,destino)/1000;
copyBody.replaceText('keydestacia',distancea);
//保存临时文档
copyDoc.saveAndClose();
...
如果您希望格式化计算,请使用。我的代码功能正常!很好!莫格斯达德,“vocèo cara!”。非常感谢
// 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);
}
请尝试驾驶距离([partida,destino])from。对不起,我不明白。我必须复制并粘贴代码作为我的工作表中的新项目?我尝试了“var distancea=drivingDistance(partida,destino)/1000”;但我得到了一个参考错误。提前谢谢!您需要复制
drivingDistance()
函数的代码,以及它所需的任何其他内容,例如getDirections()
,该函数由drivingDistance()调用。如果您不熟悉JavaScript和Google Apps脚本,您应该先完成快速入门练习进行练习。再次非常感谢您,尤其是您的耐心!我真的是个新手,但我希望练习和快速学习。我会努力工作的!我去过那里,所以我理解!我发现谷歌的JavaScript课程是一个很好的起点,然后转向谷歌的教程和快速入门项目。我建议先找一个好的基础,以避免可能遇到更艰巨的项目。