我有一个电子表格,看起来像这样:
Date | Day | S1 | S2 | S3 | S4 | S5 | S6 |
-----------------------------------------------------------------
14/04/20 | Sun | P-1 | H-1 | E-1 | R-1 | F-1 | G-1 |
15/04/20 | Mon | P-1 | H-1 | E-3 | R-1 | F-2 | G-2 |
目的是向该电子邮件发送该特定日期的时间表(S1至S6)。 该脚本将在一天的特定时间运行。它将今天的日期与第一列中的日期进行比较。如果日期匹配,则该行上的数据应发送到我的电子邮件地址。
我写了如下代码:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 4; //the date starts from the fourth row
var numRows = 170; //there are a total of 170 rows
var dataRange = sheet.getRange(startRow, 1, numRows, 8);
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var dateIter = row[0];
if (dateIter.getDate() == today.getDate() &&
dateIter.getMonth() == today.getMonth() &&
dateIter.getFullYear() == today.getFullYear()) {
var sub1 = row[2];
var sub2 = row[3];
var sub3 = row[4];
var sub4 = row[5];
var sub5 = row[6];
var sub6 = row[7];
var subject = 'Things you have to study today';
var message = "You have to study today" + sub1 + ", " + sub2 + ", " + sub3 + ", " + sub4 + ", " + sub5 + ", and " + sub6 + ". All the best." ;
break;
}
}
var emailAddress = 'myemail goes here';
MailApp.sendEmail(emailAddress, subject, message);
}
我不确定我在代码中写的日期函数。我收到如下错误:
TypeError:dateIter.getDate不是函数(第11行,文件“代码”)
我了解了我在此答案https://stackoverflow.com/a/14351783/9422511
中在此处编写的日期函数。正确的做法是什么?
编辑: 添加了迈克尔的建议。还有另一个错误,如下所示:
ReferenceError:今天未定义(第12行,文件“代码”)
答案 0 :(得分:1)
我已经解决了问题。我做了以下事情:
1.清除日期列,将其重新设置为日期格式。然后根据列中的日期格式再次输入日期。
2.修改了迈克尔·皮尔森(Michael Pearson)建议的日期部分。
3.“今天”已成为一个对象,如下所示:
var today = new Date();
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 4;
var numRows = 170;
var dataRange = sheet.getRange(startRow, 1, numRows, 8);
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var dateIter = row[0];
var date = new Date(dateIter);
var today = new Date();
if (date.getDate() == today.getDate() &&
date.getMonth() == today.getMonth() &&
date.getFullYear() == today.getFullYear()) {
var sub1 = row[2];
var sub2 = row[3];
var sub3 = row[4];
var sub4 = row[5];
var sub5 = row[6];
var sub6 = row[7];
var subject = 'Things you have to study today';
var message = "You have to study today" + sub1 + ", " + sub2 + ", " + sub3 + ", " + sub4 + ", " + sub5 + ", and " + sub6 + ". All the best." ;
var emailAddress = 'email goes here';
MailApp.sendEmail(emailAddress, subject, message);
break;
}
}
}
感谢您的建议。
答案 1 :(得分:0)
dateIter引用一个单元格,因此没有getDate()函数。
如果单元格包含字符串值,则可以执行以下操作:
var date = new Date(row[0]);
if (date == today.getDate()
等