Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 提交表格时,以公里为单位计算行驶距离_Google Apps Script_Google Forms - Fatal编程技术网

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课程是一个很好的起点,然后转向谷歌的教程和快速入门项目。我建议先找一个好的基础,以避免可能遇到更艰巨的项目。