来自电子表格Javascript的电子邮件:如何使消息等于多个列?
我和一位同事正在使用谷歌表单收集学生的短文。数据被写入电子表格。我们希望将反馈输入电子表格,并制作一份脚本,通过电子邮件向每个学生发送他们的论文和反馈的副本 谷歌提供了以下代码(源代码:): 我们已经找到了如何增加脚本从电子表格中读取的行数,以考虑我们的类大小 我们无法理解的是如何使文章(在一个专栏中)和反馈(在另一个专栏中)的信息相等。要实现这一点,我们需要在代码中做哪些更改?这里有一个链接指向。只需复制一份电子表格并测试代码 通过突出显示电子表格中的一行或多行数据并从脚本编辑器中运行来自电子表格Javascript的电子邮件:如何使消息等于多个列?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我和一位同事正在使用谷歌表单收集学生的短文。数据被写入电子表格。我们希望将反馈输入电子表格,并制作一份脚本,通过电子邮件向每个学生发送他们的论文和反馈的副本 谷歌提供了以下代码(源代码:): 我们已经找到了如何增加脚本从电子表格中读取的行数,以考虑我们的类大小 我们无法理解的是如何使文章(在一个专栏中)和反馈(在另一个专栏中)的信息相等。要实现这一点,我们需要在代码中做哪些更改?这里有一个链接指向。只需复制一份电子表格并测试代码 通过突出显示电子表格中的一行或多行数据并从脚本编辑器中运行emai
emailFeedback
功能来测试脚本。或者,如果选择了1行或多行,则可以从电子表格中的“自定义工具”菜单执行脚本
我把它分成两个函数。第一个函数emailFeedback
获取您在电子表格中选择的行,循环遍历每行数据,并为每行调用第二个函数sendmail
,前提是存在反馈和文本(可以添加更多验证和错误处理)
希望这有帮助:)您是否尝试添加这两列?类似于
var message=row[1]+row[2]代码>发送html电子邮件可能更具可读性
function emailFeedback() {
var ss = SpreadsheetApp.getActiveSheet();
var range = ss.getActiveRange();
var numRows = range.getNumRows();
var values = range.getValues();
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
var to = row[1];
var story = row[2];
var feedback = row[3];
if (feedback.length > 0 && story.length > 0) {
// make sure valid story and feedback before sending
sendEmail(to, story, feedback);
}
}
};
function sendEmail(to, story, feedback) {
var sendToName = to.split('@')[0];
// email content
var emailSubject = "Feedback on your story submission";
// plain text body - just in case receiver can't parse html formatted email
var plainTxtBody = "Hi " + sendToName + ",\n" +
"You wrote:\n" + story + "\n" +
"Our feedback:\n" + feedback;
// html formatting isn't necessary, but nice for reading :)
var htmlBody = '<html><body>';
var htmlFooter = '</body></html>';
// replacing newline characters with paragraph breaks to make it more readable
var storyHTML = story.replace(/\n/g, "</p><p>");
var feedbackHTML = feedback.replace(/\n/g, "</p><p>");
var emailMessage = "<p>Hi " + sendToName + ",</p>" +
"<p><strong>You wrote:</strong><p>" +
"<p>" + storyHTML + "</p>" +
"<hr>" +
"<p><strong>Here is our feedback:</strong></p>" +
"<p>" + feedbackHTML + "</p>";
htmlBody += emailMessage + htmlFooter;
// GmailApp must have default recipient, subject, body attributes followed by jsobject options {}
// Differs from MailApp syntax but has more options -- see documentation on GmailApp
GmailApp.sendEmail(to, emailSubject, plainTxtBody, {
htmlBody: htmlBody,
});
};