Quantcast
Channel: Active questions tagged javascript - Stack Overflow
Viewing all articles
Browse latest Browse all 138163

Modify google calendar based on google spreadsheet data (prevent duplication)

$
0
0

I have the following spreadsheet and I want to send a reminder to the people and also add the events in the calendar. I have written the following code which works but has issues.I have activated trigger that with each edit it runs the code. So, to prevent duplicate emails or duplicate "adding to the calendar", I added two columns eventid and calendarid which changes the cell to remindersent if reminder is sent or calendarupdated if the event is added to the calendar. Although it resolves the duplicate problem but causes other problems:

  1. if I edit any information in spreadsheet, it will not send a reminder or update calendar since it already did. even if I delete the calendarsent text from calendarid, it adds a new event instead of modifying the existing event.

  2. in the email column, I need to fill all the cells to get reminders. for example if I fill the first cell, and leave the second cell blank, and fill the third cell, the email that I entered in the third cell will not get the reminder.

I will appreciate if anyone can help me to improve my code. It will mean a lot to me. Thanks

enter image description here


function createCalendarEvent() {
var sheet  = SpreadsheetApp.getActiveSheet();
   // figure out what the last row is
  var lastRow1 = sheet.getLastRow();
  // the rows are indexed starting at 1, and the first row
  // is the headers, so start with row 5
  var startRow1 = 5;
  // grab column 6 (the 'days left' column) 
  var range = sheet.getRange(5,6,lastRow1-startRow1+1,1 );
  var numRows = range.getNumRows();
  var days_left_values = range.getValues();
    range = sheet.getRange(5, 1, lastRow1-startRow1+1, 1);
  var start_info_values = range.getValues();
     range = sheet.getRange(5, 2, lastRow1-startRow1+1, 1);
  var end_info_values = range.getValues();
  range = sheet.getRange(5, 3, lastRow1-startRow1+1, 1);
  var reminder_info_values = range.getValues();
     range = sheet.getRange(5, 4, lastRow1-startRow1+1, 1);
  var names_info_values = range.getValues();
  range = sheet.getRange(5, 5, lastRow1-startRow1+1, 1);
    var emails_info_values = range.getValues();
   range = sheet.getRange(5, 7, lastRow1-startRow1+1, 1);
    var eventID_info_values = range.getValues();
    range = sheet.getRange(5, 8, lastRow1-startRow1+1, 1);
    var CalID_info_values = range.getValues();

  
  var warning_count = 0;
  var msg = "";
  var complete="ReminderSent";
  var CalendarUpdated="CalendarUpdated";
      var calendarId = sheet.getRange("H2").getValue();
     var eventCal = CalendarApp.getCalendarById(calendarId);
   range = sheet.getRange(5, 1, lastRow1-startRow1+1, 8);
    var data = range.getValues();
    for (var i = 0; i < data.length; ++i) {
       var start = start_info_values [i][0];
       var end = end_info_values [i][0];
       var reminder_name = reminder_info_values[i][0];
       var names = names_info_values [i][0];

    var CalID = CalID_info_values [i][0]; //event marked CalendarUpdated
   
    if (CalID != CalendarUpdated) {
      var currentCell = sheet .getRange(startRow1 + i, 8);
      eventCal.createEvent(eminder_name, start, end, {description: names} );
    
      currentCell.setValue(CalendarUpdated);
    
  }
  }
   
  // 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 <=2) {
      //var reminder_name = reminder_info_values[i][0];
      msg = msg + "Reminder: "+reminder_name+" is due in "+days_left+" days.\n";
      warning_count++;
    }
    var emails= emails_info_values [i][0];
      if(warning_count) {
        var eventID= eventID_info_values[i][0];
        if(eventID!=complete){
           var currentCell = sheet .getRange(startRow1 + i, 7);
    MailApp.sendEmail(emails,"Reminder", msg);
          currentCell.setValue(complete);
        }
  }
  }
}

Viewing all articles
Browse latest Browse all 138163

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>