如何使用应用程序脚本站点通过电子邮件从Google Forms发送测验结果

人气:534 发布:2022-10-16 标签: google-apps-script google-forms

问题描述

我需要一个Google脚本(GAS)来发送一封电子邮件,通过Google Forms上的测验的学生可以在其中找到他的分数,例如,如果他通过了测验,他的分数是10/10,他将收到一封电子邮件到他的地址-电子邮件:&Quot;嗨,您已经通过了测验,您得到了10/10&Quot;

谢谢

function sendEmail(e) { //respond //getRespondentEmail() 
  var html = HtmlService.createTemplateFromFile("email.html"); 
  var htmlText = html.evaluate().getContent(); 
  var emailTo = e.response.getRespondentEmail(); 
  var subject = "Merci pour votre participation"; 
  var textBody = "This email requires HTML support. Please make sure you open with a client that support it." 
  var options = { htmlBody: htmlText }; Logger.log(emailTo); if(emailTo !== undefined){ GmailApp.sendEmail(emailTo, subject, textBody, options); 
  } 
}

推荐答案

通过电子邮件将测验结果发送给答复者

从窗体触发器

function onMyFormSubmit(e) {
  const form = FormApp.getActiveForm();
  const r = e.response;
  r.getGradableItemResponses().forEach((item,i) => {
    Logger.log('Question: %s Response: %s Score: %s',item.getItem().asTextItem().getTitle(),item.getResponse(),item.getScore());
  });
  let email = r.getRespondentEmail();
  GmailApp.sendEmail(email,"Quiz Response",Logger.getLog())
  Logger.log(r);
}

function createOnFormSubmitTrigger() {
  const form = FormApp.getActiveForm();
  if(ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == "onMyFormSubmit").length == 0) {
    ScriptApp.newTrigger("onMyFormSubmit").forForm(form).onFormSubmit().create();
  }
}

从电子表格触发器

function onMyFormSubmit(e) {
  Logger.log(JSON.stringify(e));
  const ss = SpreadsheetApp.getActive();
  const sh = e.range.getSheet();
  const hA = sh.getRange(1,2,1,6).getValues().flat();
  let s = '';
  hA.forEach(h => {
    s+= `
Question: ${h} Answer: ${e.namedValues[h][0]}`
  });
  s += `
Your Score is: ${e.namedValues.Score}`;
  //Logger.log(s);
  GmailApp.sendEmail(e.namedValues['Email Address'][0],"Quiz Result",s);
}

电子邮件:

448