我想制作一个脚本,在提交表单几天后,向我发送邮件,其中包含我在表单中输入的内容。作为学生学习的帮助。在表格中输入要学习的内容,然后在1天,7天和28天之后通过邮件获取。
我已经制作了一份表格,收集邮件的时间,收件人地址,主题和正文。这些内容保存在Google电子表格中。
代码类的工作。但它会从工作表中的测试输入中发送所有邮件。我在6天前添加了一个,昨天增加了一个,今天增加了一个。 今天我只能收到一封邮件,明天送两封邮件。但我今天得到了所有这些。
我认为这就是这条线:
if (diffDays == 1 || diffDays == 7 || diffDays == 28) continue;
我试图改变它,搜索其他编写方式,例如数组。
这里是完整的代码:
function createTimeDrivenTriggers() {
ScriptApp.newTrigger('reminder')
.timeBased()
.everyDays(1)
.atHour(16) // Change time of day here
.inTimezone("Europe/Stockholm")
.create();
}
function reminder() {
var today = new Date(); // Today
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues();
var headerRows = 1;
for (i=0; i<data.length; i++){
if (i < headerRows) continue;
var row = data[i];
var time = row[0];
// Get time difference
var timeDiff = Math.abs(today.getTime() - time.getTime());
var diffDays = Math.ceil((timeDiff) / (1000 * 3600 * 24)-1);
if (diffDays == 1 || diffDays == 7 || diffDays == 28) continue;
var recipient = row[1];
var subject = row[2];
var body = row[3];
// Send mail
GmailApp.sendEmail(recipient, subject, body)
}
}
由于
答案 0 :(得分:0)
确保仅在if语句为真时执行代码。
在语句本身中包含if语句之后的所有代码,仅在diffDays = 1,2或28时执行它。
function reminder() {
var today = new Date(); // Today
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues();
var headerRows = 1;
for (i=0; i<data.length; i++){
if (i < headerRows) continue;
var row = data[i];
var time = row[0];
// Get time difference
var timeDiff = Math.abs(today.getTime() - time.getTime());
var diffDays = Math.ceil((timeDiff) / (1000 * 3600 * 24)-1);
if (diffDays == 1 || diffDays == 7 || diffDays == 28) {
var recipient = row[1];
var subject = row[2];
var body = row[3];
// Send mail
GmailApp.sendEmail(recipient, subject, body)
}
}
}
答案 1 :(得分:0)
请注意,continue
表示&#34;停止处理正在执行的循环的此迭代,并开始下一次迭代。&#34;因此,您的脚本每天都会发送提醒除了您想要提醒他们的日子。
将测试更改为&#34; AND NOT&#34;,移动代码以在现有检查中提醒,或使用更具表现力的语法(如switch
)将满足您的意图。
switch (diffDays) {
case 1:
case 7:
case 28:
sendReminder(your, Args, Here);
break;
case 0:
sendWelcome(some, other, Args);
break;
...
default:
break;
}
...
function sendReminder(your, Args, Here) {
/* Code that uses function arguments to build and send an email */
}
&#34;而不是&#34;意思是if (diffDay != 1 && diffDay != ...)
,即&#34;如果它不是这个,而不是那个,而不是这个,而不是......&#34;