我需要一個谷歌腳本(GAS)來發送一封電子郵件,通過谷歌表格測驗的學生可以找到他的成績,例如,如果他通過了測驗并且他的成績是 10/10,他將在他的地址上收到一封電子郵件 -電子郵件:“嗨,您已經通過了測驗,并且獲得了 10/10”
謝謝
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);
}
}
uj5u.com熱心網友回復:
將測驗結果通過電子郵件發送給受訪者
從表單觸發器
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 = `\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);
}
電子郵件:

uj5u.com熱心網友回復:
我相信你的目標如下。
- 提交表單后,您希望在成績為 10/10 時發送電子郵件。
- 從
function sendEmail(e) {和 開始var emailTo = e.response.getRespondentEmail();,您的腳本是 Google Form 的容器系結腳本。并且,您的功能sendEmail被安裝為 OnSubmit 觸發器。
修改點:
- 為了檢查
if he passed the quiz and his grade is 10/10,需要計算所有專案的等級。
當這一點反映在你的腳本中時,它變成如下。
修改后的腳本:
在此腳本中,它假設函式sendEmail由 OnSubmit 觸發器運行。所以請sendEmail再次確認該功能是否已經安裝為 OnSubmit 觸發器。
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) {andvar emailTo = e.response.getRespondentEmail();,我了解到您的腳本是 Google Form 的容器系結腳本。所以請注意這一點。OnSubmit 觸發器可以使用此修改后的腳本。因此,當您對此進行測驗時,請提交表單。當您直接運行此腳本時,會發生錯誤。請注意這一點。
參考:
- 可安裝觸發器
- 減少()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407251.html
標籤:
上一篇:帶有ActixRust的UdpFramed。無法使用SinkWrite發送訊息
下一篇:為什么表格中沒有彈出此錯誤訊息?
