首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用应用脚本网站发送谷歌表单的测试结果?

如何使用应用脚本网站发送谷歌表单的测试结果?
EN

Stack Overflow用户
提问于 2022-01-10 01:01:09
回答 2查看 227关注 0票数 0

我需要一个谷歌脚本(GAS)来发送一封电子邮件,让在谷歌表格上通过测试的学生能够找到他的成绩,例如,如果他通过了测验,成绩是10/10,他会在他的地址上收到一封电子邮件--电子邮件:“嗨,你已经通过了你的测试,你得到了10/10”

谢谢

代码语言:javascript
运行
复制
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); 
  } 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-10 03:15:33

将测试结果电邮给被访者

来自表单触发器

代码语言:javascript
运行
复制
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();
  }
}

来自电子表格触发器

代码语言:javascript
运行
复制
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+= `\nQuestion: ${h} Answer: ${e.namedValues[h][0]}`
  });
  s += `\nYour Score is: ${e.namedValues.Score}`;
  //Logger.log(s);
  GmailApp.sendEmail(e.namedValues['Email Address'][0],"Quiz Result",s);
}

电子邮件:

票数 1
EN

Stack Overflow用户

发布于 2022-01-10 04:46:26

我相信你的目标如下。

  • 当提交表单时,您希望在成绩为10/10时发送电子邮件。
  • function sendEmail(e) {var emailTo = e.response.getRespondentEmail();中,您的脚本是Google的容器绑定脚本。并且,您的sendEmail函数被安装为OnSubmit触发器。

修改点:

  • 为了检查if he passed the quiz and his grade is 10/10,需要计算所有项目的等级。

当这一点反映在您的脚本中时,如下所示。

修改脚本:

在这个脚本中,它假设函数sendEmail是由OnSubmit触发器运行的。因此,请确认函数sendEmail是否已经作为OnSubmit触发器再次安装。

代码语言:javascript
运行
复制
function sendEmail(e) {
  var maxGrade = 10; // This is from "10/10" in your question.
  var grade = e.response.getGradableItemResponses().reduce((p, e) => p += e.getScore(), 0);
  var emailTo = e.response.getRespondentEmail();
  if (grade < maxGrade || !emailTo) return;

  var subject = "Sample subject"; // Please set the subject.
  var textBody = "Hi, you've already passed your quiz and you got a 10/10.";
  GmailApp.sendEmail(emailTo, subject, textBody);
}

注意:

  • function sendEmail(e) {var emailTo = e.response.getRespondentEmail();中,我了解到您的脚本是Google的conteiner绑定脚本。所以请小心点。
  • 此修改后的脚本可由OnSubmit触发器使用。所以当你测试这个的时候,请提交表格。直接运行此脚本时,会发生错误。请小心这件事。

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70646794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档