automatiza y enviar correo con Google Apps Script

ahora automatizaremos la correción de una práctica o examen.
con un formulario que crearemos en google docs haremos un examen y los datos se guardaran en un SpreadSheet, corregir una práctica que tiene opciones y luego enviarles un correo con su nota mmmm algo aburrido, lo mejor seria que se corrija y envie el correo con la nota automáticamente =)












Creamos un Formulario en Google Docs.
  • La práctica consta de 4 preguntas con alternativas a,b,c,d o verdadero, falso y ademas debe ingresar su correo.
  • Luego nos dirigimos al SpreadSheet en donde le agregaremos la columna  "Nota".

  • ahora abriremos el editor de secuencia de comandos.



La función calcular() sumara los puntos de las preguntas.
Esta linea de código sheet.getActiveCell().getRow() lo que hace es darnos la posición de la fila activa.

function calcular(){
  var sheet=SpreadsheetApp.getActiveSpreadsheet()
      var row=sheet.getActiveCell().getRow();
  
  var uno=sheet.getRange("C"+row).getValue();
  var dos=sheet.getRange("D"+row).getValue();
  var tres=sheet.getRange("E"+row).getValue();
  var cuatro=sheet.getRange("F"+row).getValue();
  
  
  var nota=0;
  
  if(String.substring(uno,0,1)=="a"){
    nota+=5;
  }
  
  if(String.substring(dos,0,1)=="V"){
    nota+=5;
  }
  
  if(String.substring(tres,0,1)=="c"){
    nota+=5;
  }
  
  if(String.substring(cuatro,0,1)=="d"){
    nota+=5;
  }
  
  sheet.getRange("G"+row).setValue(nota);
  color(nota);
  
  enviarCorreo(nota)
}

Lo que hace la función enviarCorreo() es enviar un correo mediante la clase MailApp.semdEmail() que nos pide 3 parametros tipo String.

-el correo del destinatario que en este caso seria el que resuelve la práctica.
-el asunto.
-y el contenido del email.


function enviarCorreo(nota){

    var sheet=SpreadsheetApp.getActiveSpreadsheet();
  var row=sheet.getActiveCell().getRow();
  
  var recipient=sheet.getRange("B"+row).getValue();
  var subject="Revisión de práctica";
  var body="Su nota es: "+nota;
      
      MailApp.sendEmail(recipient, subject, body);
}

lo que hace la función color() es pintar la letra con el color asignado.
el valor del color puede ser el nombre de un color escrito en ingles o por código de colores.

function color(e){
  var sheet=SpreadsheetApp.getActiveSpreadsheet();
  var row=sheet.getActiveCell().getRow();
    if(e>10){
    sheet.getRange("G"+row).setFontColor("blue");
  }else{
    sheet.getRange("G"+row).setFontColor("#FF0000");
  }
  
}

Con todo el código anterior tenemos el proceso de la calificación de la práctica pero para que sea automático necesitamos usar la función onFormSubmit(), esta función se llamara cada vez que se llene el formulario y envie los datos.
dentro de la función llamamos a la función calcular.

function onFormSubmit(){
  calcular();
}

también debemos activar la secuencia de comandos.
 
nos muestra esta ventana y en el ultima lista elegimos la opción "On form submit"








así se veria el SpreadSheet

y asi llegaría el correo.









Comentarios

Entradas populares de este blog

Help desk - Google Apps Script