繁体   English   中英

如果新日期是今天的日期,如何使用 Google Sheet 的应用脚本向用户输入的日期和 email 添加 90 天

[英]How to use Google Sheet's app script to add 90 days to user inputted date and email if new date is today's date

如何在谷歌表格中获取日期以在用户输入日期后 90 天自动生成。 所以,我有两列,在 J 列中,我将输入我第一次访问患者的日期。 然后在 K 列中,日期应在第一次访问后自动填充 90 天。 但是第二个日期必须自动填充,一旦我们到达这个日期,脚本应该自动发送 email。 我尝试使用谷歌表本身以简单的方法 go 但问题是一旦删除一行,整个列的公式就会被删除。

在问这个问题之前,我试着看看这个其他的解决方案: 如何从谷歌表格中添加日期到日期? 但我还是有点失落。

现在,我也知道谷歌表格本身中有一个名为 TODAY() 的 function,我也尝试过。 但问题是,如果某人/用户删除了一行,那么我的 TODAY() 公式将丢失 rest 行。 这就是为什么我需要在 App 脚本中执行此操作。 任何人都可以请帮我吗? 到目前为止,我有以下代码。

在此处输入图像描述

function DateCompare() {
   const ss = SpreadsheetApp.getActiveSheet();
   const dataRange = ss.getDataRange();
   const dataRangeVals = dataRange.getValues();
   const headers = 2;  
   var getNewDate = new Date();
   var getDate = new Date().getDate();
   var getMonth = new Date().getMonth()+1;
   var getYear = new Date().getFullYear();
   var dateGlued = getMonth + "/" + getDate + "/" + getYear;  

   for(n=2;n<dataRangeVals.length;++n){
     var cell = dataRangeVals[n][10]; // x is the index of the column starting from 0
     var formattedDate = Utilities.formatDate(new Date(cell), "GMT", "MM/dd/YYYY");
  if (dateGlued.valueOf() === formattedDate.valueOf()) {
     Logger.log("Date Matched!")
   }
 } 
}

function ifItsBeen90Days() {  
   const ss = SpreadsheetApp.getActiveSheet();
   const dataRange = ss.getDataRange();
   const dataRangeVals = dataRange.getValues();
   const headers = 2;  

 dataValues
   .filter(row => row[10] !== '' && row[11] !== "") //filtered data where row[9] is empty
   .forEach(row => {

    let message =
    row[0] +
    '\n' +
    row[1] +
    '\n' +
    row[2] +
    '\n' +
    row[3] +
    '\n' +
    row[4] +
    '\n' +
    row[5]; 
  let email = row[13];
  let subject = 'Sending emails from a Spreadsheet';
  MailApp.sendEmail(email, subject, message); 
  Logger.log(`${subject}: ${message} sent to ${email}`);
  });
 }

当您可以简单地使用公式来检查所需的标准时,为什么还要使用 GAS。 标准(基于图像)是:

  1. 在 J 栏中输入的日期之后的 90 天

因此,该公式等于以下公式,只需确保将列格式化为日期。

=IF(ISDATE(J2); J2+90; "")

所以现在我们已经确定了日期。

然后,为了在该计算日期自动发送电子邮件,您需要每天运行触发器。 然后,该触发器运行特定的 function,然后检查是否有任何行包含今天的日期。 如果是,则发送 email,如果不是,则不发送。 将活动记录到工作表是最佳实践,这样您就可以看到活动已发送的确认信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM