簡體   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