0

I'm trying to automate a google calendar process with the google apps script. Every week, I record the events I have to do with the default color (peacock). When I have realized these events, I put them in green. I'm trying to create a script that at the end of each week, looks for all the events that are in blue and shifts them to the next week, same day and same time.

I have made several attempts but I cannot select the events with their color. I tried by spotting a keyword in the title and my code works. But not with color. Here is my code:

function moveBlueEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var now = new Date();
  var nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);
  var events = calendar.getEvents(now, nextWeek);

  var blueCode = 16; 

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var eventColor = event.getColor();
    
    if (eventColor == blueCode) {
      var newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      var newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  }
}

I used this github page : text

I don't know whether to use the color code, its name or its hexadecimal code. Because this code doesn't work either:

function moveBlueEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var now = new Date();
  var nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);
  var events = calendar.getEvents(now, nextWeek);

  var blueCode= "#46d6db"; 

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var eventColor = event.getColor();
    
    if (eventColor == blueCode) {
      var newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      var newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  }
}

This code didn't worck with this hex : #039BE5

Thanks in advance for your answers.

Framboise
  • 31
  • 3

2 Answers2

2

Ok. I solved the problem. When you put an event with the default color, it is considered empty. Here is an example of code that moves all events from the default color to the next week.

function moveBlueEvents() {
  const now = new Date();
  const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);
  const peacockColorId = ""; // Default event coulour (here Peacock)

  const events = CalendarApp.getDefaultCalendar().getEvents(now, nextWeek);
  
  events.forEach(event => {
    const eventColorId = event.getColor();

    if (eventColorId === peacockColorId) {
      const newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      const newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  });
}
Framboise
  • 31
  • 3
0

I don't know if this will help or not:

function eventColorEnum() {
  const keys = Object.keys(CalendarApp.EventColor)
  keys.forEach((key, index) => {
    console.log(`${key} has index ${index}`)
  })
}

Execution Log:

None has index 0
BLUE has index 1
CYAN has index 2
GRAY has index 3
GREEN has index 4
MAUVE has index 5
ORANGE has index 6
PALE_BLUE has index 7
PALE_GREEN has index 8
RED has index 10
PALE_RED has index 9
YELLOW has index 11

I have a feeling that the individual who decided to create this Enum must be related to the individual that decided to make the word sheets synonymous to spreadsheet.

I also took the above information and some code from here

function colourNameToHex(colour) {
  var cObj = {"aliceblue":"#f0f8ff","antiquewhite":"#faebd7","aqua":"#00ffff","aquamarine":"#7fffd4","azure":"#f0ffff","beige":"#f5f5dc","bisque":"#ffe4c4","black":"#000000","blanchedalmond":"#ffebcd","blue":"#0000ff","blueviolet":"#8a2be2","brown":"#a52a2a","burlywood":"#deb887","cadetblue":"#5f9ea0","chartreuse":"#7fff00","chocolate":"#d2691e","coral":"#ff7f50","cornflowerblue":"#6495ed","cornsilk":"#fff8dc","crimson":"#dc143c","cyan":"#00ffff","darkblue":"#00008b","darkcyan":"#008b8b","darkgoldenrod":"#b8860b","darkgray":"#a9a9a9","darkgreen":"#006400","darkkhaki":"#bdb76b","darkmagenta":"#8b008b","darkolivegreen":"#556b2f","darkorange":"#ff8c00","darkorchid":"#9932cc","darkred":"#8b0000","darksalmon":"#e9967a","darkseagreen":"#8fbc8f","darkslateblue":"#483d8b","darkslategray":"#2f4f4f","darkturquoise":"#00ced1","darkviolet":"#9400d3","deeppink":"#ff1493","deepskyblue":"#00bfff","dimgray":"#696969","dodgerblue":"#1e90ff","firebrick":"#b22222","floralwhite":"#fffaf0","forestgreen":"#228b22","fuchsia":"#ff00ff","gainsboro":"#dcdcdc","ghostwhite":"#f8f8ff","gold":"#ffd700","goldenrod":"#daa520","gray":"#808080","green":"#008000","greenyellow":"#adff2f","honeydew":"#f0fff0","hotpink":"#ff69b4","indianred":"#cd5c5c","indigo":"#4b0082","ivory":"#fffff0","khaki":"#f0e68c","lavender":"#e6e6fa","lavenderblush":"#fff0f5","lawngreen":"#7cfc00","lemonchiffon":"#fffacd","lightblue":"#add8e6","lightcoral":"#f08080","lightcyan":"#e0ffff","lightgoldenrodyellow":"#fafad2","lightgrey":"#d3d3d3","lightgreen":"#90ee90","lightpink":"#ffb6c1","lightsalmon":"#ffa07a","lightseagreen":"#20b2aa","lightskyblue":"#87cefa","lightslategray":"#778899","lightsteelblue":"#b0c4de","lightyellow":"#ffffe0","lime":"#00ff00","limegreen":"#32cd32","linen":"#faf0e6","magenta":"#ff00ff","maroon":"#800000","mediumaquamarine":"#66cdaa","mediumblue":"#0000cd","mediumorchid":"#ba55d3","mediumpurple":"#9370d8","mediumseagreen":"#3cb371","mediumslateblue":"#7b68ee","mediumspringgreen":"#00fa9a","mediumturquoise":"#48d1cc","mediumvioletred":"#c71585","midnightblue":"#191970","mintcream":"#f5fffa","mistyrose":"#ffe4e1","moccasin":"#ffe4b5","navajowhite":"#ffdead","navy":"#000080","oldlace":"#fdf5e6","olive":"#808000","olivedrab":"#6b8e23","orange":"#ffa500","orangered":"#ff4500","orchid":"#da70d6","palegoldenrod":"#eee8aa","palegreen":"#98fb98","paleturquoise":"#afeeee","palevioletred":"#d87093","papayawhip":"#ffefd5","peachpuff":"#ffdab9","peru":"#cd853f","pink":"#ffc0cb","plum":"#dda0dd","powderblue":"#b0e0e6","purple":"#800080","rebeccapurple":"#663399","red":"#ff0000","rosybrown":"#bc8f8f","royalblue":"#4169e1","saddlebrown":"#8b4513","salmon":"#fa8072","sandybrown":"#f4a460","seagreen":"#2e8b57","seashell":"#fff5ee","sienna":"#a0522d","silver":"#c0c0c0","skyblue":"#87ceeb","slateblue":"#6a5acd","slategray":"#708090","snow":"#fffafa","springgreen":"#00ff7f","steelblue":"#4682b4","tan":"#d2b48c","teal":"#008080","thistle":"#d8bfd8","tomato":"#ff6347","turquoise":"#40e0d0","violet":"#ee82ee","wheat":"#f5deb3","white":"#ffffff","whitesmoke":"#f5f5f5","yellow":"#ffff00","yellowgreen":"#9acd32"};
  const keys = Object.keys(CalendarApp.EventColor)
  keys.forEach((key, index) => {
    if (index > 0) {
      if(cObj.hasOwnProperty(key.toLowerCase().replace('_',''))) {
        Logger.log(`${key} or ${cObj[key.toLowerCase().replace('_','')]} has index ${index}`);
      } else {
        Logger.log(`${key} not found in cObj has index ${index}`)
      }
    }
  });
}

And you get:

BLUE or #0000ff has index 1
CYAN or #00ffff has index 2
GRAY or #808080 has index 3
GREEN or #008000 has index 4
MAUVE not found in cObj has index 5
ORANGE or #ffa500 has index 6
PALE_BLUE not found in cObj has index 7
PALE_GREEN or #98fb98 has index 8
PALE_RED not found in cObj has index 9
RED or #ff0000 has index 10
YELLOW or #ffff00 has index 11

Not sure that's worth much but it was interesting

Cooper
  • 59,616
  • 6
  • 23
  • 54