根据 Google 表格中表单提交的单元格总和发送电子邮件
Send email based on the sum of cells from a form submission in Google Sheets
我有一个包含一系列线性比例问题的表格。提交到 sheet 那里我想得到他们的答案总数,如果数字是 40 或超过发送电子邮件给他们 "A" 如果是 39 或以下他们会收到电子邮件 "B".
有没有办法在提交表单时对新创建的行中的列 B:G 求和,从 H 列获取用户的电子邮件地址并使用 B:G 的总和来确定哪个电子邮件发送了吗?
我已经多次阅读 App Script 文档,但似乎无法理解并 运行 成功。
编辑以添加我到达的地方(意识到它目前毫无价值):
function onFormSubmit(e){
var emailSubject;
var row = 1;
var messageCore;
var newUserEmailSent = "NO";
var EMAIL_SENT = "YES";
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var lastRowUsed = getFirstEmptyRowByColumnArray() -1;
function getFirstEmptyRowByColumnArray() {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange('A:A');
var values = column.getValues();
lastRowUsed.setFormula("=SUM(B1:G1)");
}
}
你开了个好头。请查看 "on form submit" 触发器返回的 event object。由于该对象包含所有响应数据,因此您实际上不需要读取 sheet 中的内容。具体来说,请注意 values
属性,它包含一个数组,其值(答案)的顺序与它们在传播 sheet.
中出现的顺序相同
您可以使用这些值进行所有求和和 control-flow(大于或小于 40)。然后您可以使用 MailApp 发送适当的电子邮件。
查看此示例并根据需要进行任何调整。
function onFormSubmit(formResponse){
var sum = 0;
for (var i = 1; i <= 6; i++) { // Column B = 1, Column G = 6
sum = sum + Number(formResponse.values[i]);
}
var emailAddress = formResponse.values[7]; // This is the value that will be in Column H
var yourEmailAddress = "me@example.com"; // Will be used in the BCC field, in case you want to receive the emails too
if (sum >= 40) {
var emailASubject = "Email A Subject";
var emailABody = "Email A Body";
MailApp.sendEmail(emailAddress, emailASubject, emailABody, {bcc: yourEmailAddress});
} else {
var emailBSubject = "Email B Subject";
var emailBBody = "Email B Body";
MailApp.sendEmail(emailAddress, emailBSubject, emailBBody, {bcc: yourEmailAddress});
}
}
我假设您的表单回复已经保存到您的传播sheet(这是一项要求),但不要忘记 install the trigger,如下图所示。
我有一个包含一系列线性比例问题的表格。提交到 sheet 那里我想得到他们的答案总数,如果数字是 40 或超过发送电子邮件给他们 "A" 如果是 39 或以下他们会收到电子邮件 "B".
有没有办法在提交表单时对新创建的行中的列 B:G 求和,从 H 列获取用户的电子邮件地址并使用 B:G 的总和来确定哪个电子邮件发送了吗?
我已经多次阅读 App Script 文档,但似乎无法理解并 运行 成功。
编辑以添加我到达的地方(意识到它目前毫无价值):
function onFormSubmit(e){
var emailSubject;
var row = 1;
var messageCore;
var newUserEmailSent = "NO";
var EMAIL_SENT = "YES";
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var lastRowUsed = getFirstEmptyRowByColumnArray() -1;
function getFirstEmptyRowByColumnArray() {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange('A:A');
var values = column.getValues();
lastRowUsed.setFormula("=SUM(B1:G1)");
}
}
你开了个好头。请查看 "on form submit" 触发器返回的 event object。由于该对象包含所有响应数据,因此您实际上不需要读取 sheet 中的内容。具体来说,请注意 values
属性,它包含一个数组,其值(答案)的顺序与它们在传播 sheet.
您可以使用这些值进行所有求和和 control-flow(大于或小于 40)。然后您可以使用 MailApp 发送适当的电子邮件。
查看此示例并根据需要进行任何调整。
function onFormSubmit(formResponse){
var sum = 0;
for (var i = 1; i <= 6; i++) { // Column B = 1, Column G = 6
sum = sum + Number(formResponse.values[i]);
}
var emailAddress = formResponse.values[7]; // This is the value that will be in Column H
var yourEmailAddress = "me@example.com"; // Will be used in the BCC field, in case you want to receive the emails too
if (sum >= 40) {
var emailASubject = "Email A Subject";
var emailABody = "Email A Body";
MailApp.sendEmail(emailAddress, emailASubject, emailABody, {bcc: yourEmailAddress});
} else {
var emailBSubject = "Email B Subject";
var emailBBody = "Email B Body";
MailApp.sendEmail(emailAddress, emailBSubject, emailBBody, {bcc: yourEmailAddress});
}
}
我假设您的表单回复已经保存到您的传播sheet(这是一项要求),但不要忘记 install the trigger,如下图所示。