2017-12-14 1 views
1

날짜 열이 오늘부터 7 일 또는 1 일 뒤에 있으면 미리 알림을 보내려고합니다. 이미 스크립트를 만들었고 추가하고 싶은 것은 각 열의 미리 알림을 보내기 위해 하나의 스크립트로 1 개뿐만 아니라 다른 열도 고려해야한다는 것입니다.전자 메일 여러 열에 대한 알림

예를 들어

: 그것은 계획 날짜, 계획 날짜 1, 계획 날짜 2 및 계획 날짜 3.

Sample Attached를 참조하시기 바랍니다에 대한 생각 나게한다.

스크립트 :

function checkReminder() { 
// get the spreadsheet object 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
// fetch this sheet 
var sheet = spreadsheet.getSheets()[0]; 

// figure out what the last row is 
var lastRow = sheet.getLastRow(); 

// figure out what the last column is 
var lastCol = sheet.getLastColumn(); 

// the rows are indexed starting at 1, and the first row 
// is the headers, so start with row 2 
var startRow = 2; 

// the columns are indexed starting at 2, and the first column 
// is the headers, so start with column 2 
var startCol = 2; 

// grab column 3 (the 'days left' column) 
var range = sheet.getRange(2,3,lastRow-startRow+1,1); 
var numRows = range.getNumRows(); 
var days_left_values = range.getValues(); 

// Now, grab the reminder name column 
range = sheet.getRange(2, 1, lastRow-startRow+1, 1); 
var reminder_info_values = range.getValues(); 

// Now, grab the first row 
range = sheet.getRange(1, 2, lastCol-startCol+1, 1); 
var column_info_values = range.getValues(); 

var warning_count = 0; 
var msg = ""; 

// Loop over the days left values 
for (var i = 0; i <= numRows - 1; i++) { 
var days_left = days_left_values[i][0]; 
if(days_left == 1) { 
    // if it's exactly 1, do something with the data. 
    var reminder_name = reminder_info_values[i][0]; 
    var column_name = column_info_values[0][0]; 

    msg = msg + "Reminder: "+reminder_name+" - "+column_name+" is due in "+days_left+" day.\n"; 
    warning_count++; 
    } 
} 
for (var i = 0; i <= numRows - 1; i++) { 
var days_left = days_left_values[i][0]; 
if(days_left == 7) { 
    // if it's exactly 7, do something with the data. 
    var reminder_name = reminder_info_values[i][0]; 
    var column_name = column_info_values[0][0]; 

    msg = msg + "Reminder: "+reminder_name+" - "+column_name+" is due in "+days_left+" days.\n"; 
    warning_count++; 
} 
} 

if(warning_count) { 
MailApp.sendEmail("[email protected]", 
    "Reminder Spreadsheet Message", msg); 
} 

}; 
+0

이 스크립트는 1 열에서 잘 작동합니까? – Umair

+0

예, B 및 C 열의 작업 – Bkrmkrk

+0

좋아, 대답했습니다. – Umair

답변

0

당신은 단지 하나의 컬럼 및 처리 만 가져 오는 것입니다. 이 스크립트를 다른 열에서도 실행하려면 루프를 거쳐 데이터를 가져 와서 하나씩 처리해야합니다. 여기

당신은 3 열에서 데이터를 가져 오는 것 :

// grab column 3 (the 'days left' column) 
var range = sheet.getRange(2,3,lastRow-startRow+1,1); 
var numRows = range.getNumRows(); 
var days_left_values = range.getValues(); 

현명한처럼 당신은 마지막 열까지 루프를 실행할 수 있습니다, 3, 5, 7 ... 열에서 데이터를 가져오고이를 처리하는 유지.

그래서 코드가이되지 않은 테스트 코드이

function checkReminder() { 
    // get the spreadsheet object 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    // fetch this sheet 
    var sheet = spreadsheet.getSheets()[0]; 

    // figure out what the last row is 
    var lastRow = sheet.getLastRow(); 

    // figure out what the last column is 
    var lastCol = sheet.getLastColumn(); 

    // the rows are indexed starting at 1, and the first row 
    // is the headers, so start with row 2 
    var startRow = 2; 

    // the columns are indexed starting at 2, and the first column 
    // is the headers, so start with column 2 
    var startCol = 2; 

    // Now, grab the reminder name column 
    range = sheet.getRange(2, 1, lastRow - startRow + 1, 1); 
    var reminder_info_values = range.getValues(); 

    // Now, grab the first row 
    range = sheet.getRange(1, 2, lastCol - startCol + 1, 1); 
    var column_info_values = range.getValues(); 

    var warning_count = 0; 
    var msg = ""; 

    for (var u = 3; u <= lastCol; u += 2) { 
     // grab the day's left column 
     var range = sheet.getRange(2, u, lastRow - startRow + 1, 1); 
     var numRows = range.getNumRows(); 
     var days_left_values = range.getValues(); 

     // Loop over the days left values 
     for (var i = 0; i <= numRows - 1; i++) { 
      var days_left = days_left_values[i][0]; 
      if (days_left == 1) { 
       // if it's exactly 1, do something with the data. 
       var reminder_name = reminder_info_values[i][0]; 
       var column_name = column_info_values[0][0]; 

       msg = msg + "Reminder: " + reminder_name + " - " + column_name + " is due in " + days_left + " day.\n"; 
       warning_count++; 
      } 
     } 
     for (var i = 0; i <= numRows - 1; i++) { 
      var days_left = days_left_values[i][0]; 
      if (days_left == 7) { 
       // if it's exactly 7, do something with the data. 
       var reminder_name = reminder_info_values[i][0]; 
       var column_name = column_info_values[0][0]; 

       msg = msg + "Reminder: " + reminder_name + " - " + column_name + " is due in " + days_left + " days.\n"; 
       warning_count++; 
      } 
     } 

     if (warning_count) { 
      MailApp.sendEmail("[email protected]", 
       "Reminder Spreadsheet Message", msg); 
     } 
    } 
} 

처럼 간다, 어떤 문제가 발생하면 알려주세요. 기꺼이 도와 드리겠습니다.

감사합니다.

+0

그래, 다른 열에 대해서는 잘 작동했지만 동일한 알림 이름에 대해 동시에 여러 이메일을 받고 있습니다. 또한 계획 날짜 1, 계획 날짜 2, 계획 날짜 3 등과 같이 날짜 열에 따라 열 이름을 변경하려고합니다 (이제 "계획 날짜"만 언급 함). – Bkrmkrk

+0

샘플을 보여 주시겠습니까? 문제를 원격으로 이해하는 것이 어렵다는 것을 알지 못합니다. – Umair

+0

샘플의 링크 위에 같은 언급 : 알림 : 여기에 https://docs.google.com/spreadsheets/d/1o83cQK1R1V2LNdwCTZZjxLDJIZjBmvPod0s0UcIVQyU/edit#gid=0 , I는 다음과 같이 전자 메일 알림을 얻을 수있다 : DOT 갱신 - 계획 날짜가 7 일 안에 만기됩니다. 알림 : DOT - 계획 날짜 2는 7 일 내에 만기가됩니다. 알림 : DOT - 계획 날짜 3은 1 일 안에 만기가됩니다. 알림 : 연례 총회/CRO - 계획 날짜 1은 7 일 내에 만기가됩니다. 알림 : DOT 갱신 - 계획 날짜 1은 1 일 안에 만기가됩니다. 알림 : 연례 총회/CRO - 계획 날짜 3은 7 일 내에 만기가됩니다. 이메일 알림 스크립트를 수정하십시오. 감사합니다. – Bkrmkrk