好的,我使用这个脚本: https://developers.google.com/apps-script/articles/mail_merge
我已将触发器设置为在工作表更新时触发。它确实如此,但它也发送电子邮件到telehet中的所有旧电子邮件。因此,例如当我填写表单并将user1放入电子邮件地址时,它只会向user1发送电子邮件。当我再次填写表单时,我填写user2,然后用户1和user2都收到电子邮件,我只希望user2收到电子邮件。
如果我第三次填写表单,我只希望它向user3发送电子邮件。
这是我的功能:
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 4);
var templateSheet = ss.getSheets()[1];
var emailTemplate = templateSheet.getRange("A1").getValue();
我试试这个:
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var lastRow = dataSheet.getMaxRows() - 1;
var dataRange = dataSheet.getRange(lastRow, 1, lastRow, 4);
var templateSheet = ss.getSheets()[1];
var emailTemplate = templateSheet.getRange("A1").getValue();
它什么也没发送,我做错了什么=)?
答案 0 :(得分:0)
我认为答案在于SendEmails方法,该方法在表单中的整个条目列表中向下发送,向每个条目发送邮件。要仅向表格中输入信息的最后一个人发送电子邮件,您需要修改该功能。
您有许多选项,您可以将输入范围更改为最后一行,例如:
var lastRow = dataSheet.getLastRow();
var dataRange = dataSheet.getRange(lastRow, 1, lastRow, 4);
这应该可以正常工作,其次你可以删除循环,现在只运行一次,但我建议您现在可以保留它,以防您希望随后使用工作表中的菜单向您的整个列表发送电子邮件
扩展你可以在函数SendMails(onlyLast)中有一个布尔参数来为你做切换,这样你就可以获得两全其美的效果。
function sendEmails(onlyLast) {
...
var startRow = 2;
var endRow = dataSheet.getLastRow() - 1;
if (onlyLast)
startRow = endRow;
var dataRange = dataSheet.getRange(startRow, 1, endRow, 4);
让我知道这对你有用。