Javascript 使用脚本应用程序从Google工作表中的单元格中提取日期

Javascript 使用脚本应用程序从Google工作表中的单元格中提取日期,javascript,loops,google-apps-script,google-sheets,Javascript,Loops,Google Apps Script,Google Sheets,作为免责声明,我对编程概念相当陌生。如果你真的想成为我最好的朋友,解释得越具体越好。但任何帮助都是非常感谢的 我的小公司使用QuickBooks来记录工资单的时间,但是出于后勤目的,我们让员工使用谷歌电子表格来记录他们的时间 我想写一个脚本,每天两次检查第一列的日期(根据我设置的触发器)。如果日期等于或大于今天的日期,我需要脚本同时检查同一行中几列下的单元格,以查看该单元格是否已填写。如果是0或null,我想发送通知 请看下面的图片以供参考 到目前为止,我的情况如下: function val

作为免责声明,我对编程概念相当陌生。如果你真的想成为我最好的朋友,解释得越具体越好。但任何帮助都是非常感谢的

我的小公司使用QuickBooks来记录工资单的时间,但是出于后勤目的,我们让员工使用谷歌电子表格来记录他们的时间

我想写一个脚本,每天两次检查第一列的日期(根据我设置的触发器)。如果日期等于或大于今天的日期,我需要脚本同时检查同一行中几列下的单元格,以查看该单元格是否已填写。如果是0或null,我想发送通知

请看下面的图片以供参考

到目前为止,我的情况如下:

function values2() 
{
    var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getSheetByName("TimeSheet"),
      range = sheet.getDataRange(),
      values = range.getValues(),
      indx, logToday, today, body,
      recipients = "xxxxx@xxx.zzz",
      subject = "Timesheet Notification" + ss.getName();

//Finds current date and creates string. I would prefer to have a numeric value associated to the current date, as well as a numeric value associated with the date for each row.
  var CurrentDate = new Date();
  Logger.log(CurrentDate);
      logToday = Logger.getLog();
      indx = logToday.indexOf("INFO");
      today = logToday.substring(indx + 6, indx + 16);

//I'm having things sent to my email for test purposes
  MailApp.sendEmail(recipients, subject, today);  
//Clears Log
  Logger.clear();
  for (var r=1; r<values.length; r++) 
  {
  var row = values[r],
      date = row[0],
      price = row[1],
      units = row[2],
      total = row[3],
      name = row[4];

   Logger.log(date);  
   Logger.log(price);
   Logger.log(units),
   Logger.log(total),
   Logger.log(name);
  }

  body = Logger.getLog();
  MailApp.sendEmail(recipients, subject, body);
}
函数值2()
{
var ss=SpreadsheetApp.getActiveSpreadsheet(),
sheet=ss.getSheetByName(“时间表”),
范围=工作表。getDataRange(),
values=range.getValues(),
indx,logToday,today,body,
收件人=”xxxxx@xxx.zzz",
subject=“时间表通知”+ss.getName();
//查找当前日期并创建字符串。我希望有一个与当前日期关联的数值,以及一个与每行的日期关联的数值。
var CurrentDate=新日期();
Logger.log(当前日期);
logToday=Logger.getLog();
indx=logToday.indexOf(“INFO”);
today=logToday.substring(indx+6,indx+16);
//为了测试的目的,我把东西发到了我的邮件里
MailApp.sendmail(收件人、主题、今天);
//清除日志
Logger.clear();

对于(var r=1;r如果您想将包含空单元格的第一列的日期元素与今天进行比较,那么下面的脚本如何

function values2() 
{
    var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getSheetByName("TimeSheet"),
      range = sheet.getDataRange(),
      values = range.getValues(),
      indx, logToday, today, body,
      recipients = "xxxxx@xxx.zzz",
      subject = "Timesheet Notification" + ss.getName();

    var lR = sheet.getLastRow();
    var dateinfo = sheet.getRange('a1').offset(0, 0, lR, 1).getValues();
    var today = new Date();
    var y0 = today.getFullYear();
    var m0 = today.getMonth() + 1;
    var d0 = today.getDate();

    for (var i=0; i<dateinfo.length; i++){
        x = Date.parse(dateinfo[i]);
        var date = new Date(x);
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        var d = date.getDate();
        if (y0 === y && m0 === m && d0 === d) {
            Logger.log("ok:" + i) // same date
        } else {
            Logger.log("error:" + i)  // difference date
        };
    };
}
函数值2()
{
var ss=SpreadsheetApp.getActiveSpreadsheet(),
sheet=ss.getSheetByName(“时间表”),
范围=工作表。getDataRange(),
values=range.getValues(),
indx,logToday,today,body,
收件人=”xxxxx@xxx.zzz",
subject=“时间表通知”+ss.getName();
var lR=sheet.getLastRow();
var dateinfo=sheet.getRange('a1')。偏移量(0,0,lR,1)。getValues();
var today=新日期();
var y0=today.getFullYear();
var m0=today.getMonth()+1;
var d0=today.getDate();

对于(var i=0;i如果您想将包含空单元格的第一列的日期元素与今天进行比较,那么下面的脚本如何

function values2() 
{
    var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getSheetByName("TimeSheet"),
      range = sheet.getDataRange(),
      values = range.getValues(),
      indx, logToday, today, body,
      recipients = "xxxxx@xxx.zzz",
      subject = "Timesheet Notification" + ss.getName();

    var lR = sheet.getLastRow();
    var dateinfo = sheet.getRange('a1').offset(0, 0, lR, 1).getValues();
    var today = new Date();
    var y0 = today.getFullYear();
    var m0 = today.getMonth() + 1;
    var d0 = today.getDate();

    for (var i=0; i<dateinfo.length; i++){
        x = Date.parse(dateinfo[i]);
        var date = new Date(x);
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        var d = date.getDate();
        if (y0 === y && m0 === m && d0 === d) {
            Logger.log("ok:" + i) // same date
        } else {
            Logger.log("error:" + i)  // difference date
        };
    };
}
函数值2()
{
var ss=SpreadsheetApp.getActiveSpreadsheet(),
sheet=ss.getSheetByName(“时间表”),
范围=工作表。getDataRange(),
values=range.getValues(),
indx,logToday,today,body,
收件人=”xxxxx@xxx.zzz",
subject=“时间表通知”+ss.getName();
var lR=sheet.getLastRow();
var dateinfo=sheet.getRange('a1')。偏移量(0,0,lR,1)。getValues();
var today=新日期();
var y0=today.getFullYear();
var m0=today.getMonth()+1;
var d0=today.getDate();

对于(var i=0;i显示您的尝试和出错的地方向我们显示您的尝试和出错的地方谢谢。经过大量的探索,这是我想到的。抱歉,我以前没有看到您的帖子,K.Tanaike。谢谢。经过大量的探索,这是我想到的。抱歉,我以前没有看到您的帖子,K.Tanaike。