email - 如何使用谷歌脚本通过电子邮件从电子表格发送数据
问题描述
我正在使用谷歌表格进行在线注册。一旦有人提交,一封电子邮件将发送到他们输入的电子邮件。数据是他们在表格中输入的内容。因此,这封电子邮件用作数据确认电子邮件。现在的问题是,我所做的测试是成功的,但是电子邮件包含所有数据。我的问题是,如何从特定行通过电子邮件发送特定电子邮件的数据
这就是我所做的(从某人那里复制)
function sendEmail() {
//setup function
var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var StartRow = 3;
var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
var AllValues = WholeRange.getValues();
var message = "";
//iterate loop
for (i in AllValues) {
//set current row
var CurrentRow = AllValues[i];
//define column to check if sent
var EmailSent = CurrentRow[11];
//if row has been sent, then continue to next iteration
if (EmailSent == "sent")
continue;
//set HTML template for information
message +=
"<p><b>Found by: </b>" + CurrentRow[1] + "</p>" +
"<p><b>Title: </b>" + CurrentRow[2] + "</p>" +
"<p><b>Agency: </b>" + CurrentRow[3] + "</p>" +
"<p><b>Summary: </b>" + CurrentRow[4] + "</p>" +
"<p><b>Due: </b>" + CurrentRow[5] + "</p>" +
"<p><b>Posted: </b>" + CurrentRow[6] + "</p>" +
"<p><b>Total Funding: </b>" + CurrentRow[7] + "</p>" +
"<p><b>Announcement Number: </b>" + CurrentRow[8] + "</p>" +
"<p><b>Useful Links: </b>" + CurrentRow[9] + "</p><br><br>";
//set the row to look at
var setRow = parseInt(i) + StartRow;
//mark row as "sent"
ActiveSheet.getRange(setRow, 11).setValue("sent");
}
//define who to send grants to
var SendTo = "emailaddress1@gmail.com" + "," + "emailaddress2@gmail.com";
//set subject line
var Subject = "Grants";
//send the actual email
MailApp.sendEmail({
to: SendTo,
cc: "",
subject: Subject,
htmlBody: message,
});
}
解决方案
我最近回答了一个类似的问题。对我来说,将问题分解成我们需要的部分总是比较容易的。在这种情况下,我们需要: 所有的响应,然后我们需要匹配一个响应
最好的方法是首先将表单响应作为数组读取:
function formResponsesToArray() {
var app = FormApp.openById(...),
responses = app.getResponses(), stringResponses = []
responses.forEach(function(r) {
var response = []
r.getItemResponses().forEach(function(i) {
response.push(i.getResponse())
})
stringResponses.push(response)
})
Logger.log(stringResponses)
}
如果您知道这些人的电子邮件,那么我们可以得到他们的回复,假设电子邮件是他们在表单中输入的第一件事:
var theirEmail = "hello@hello.com"
var theirResponse = stringResponses.filter(function(response) {
return response[0] === theirEmail
})
然后您可以使用 theirResponse 获取他们在表单中输入的信息!
推荐阅读
- c# - 在 ElasticSearch Nest C# 中查询内部记录
- python-3.x - 如何在与相同键关联的计划字符串中获取字典值
- c++ - 在 C++ 中获取二维向量的行向量
- spring-data-neo4j - 动态获取 Node Neo4j 的属性
- android - 使用 SoundPool 按顺序播放两个声音
- javascript - 没有javascript的CSS菜单下划线幻灯片?
- python - Selenium Webdriver 在 iframe 上循环
- python - 按索引在熊猫中删除行 - 必须添加到索引?
- apache-flink - Flink1.5.4 异常:损坏的流,发现标签:105
- android - 资源覆盖