15 december 2017

Verjaardagen toevoegen aan een kalender

Getriggerd door een vraag die ik tegenkwam op Google+ ben ik weer eens aan het scripten geslagen.
Iemand wilde graag events in een Google agenda creëren vanuit een Google spreadsheet. Ik ben er eens in gedoken en zag dat er diverse add-ons worden aangeboden waarvoor je als snel moet betalen wil je ze volledig gebruiken. Via de Scripteditor kun je een en ander echter ook prima zelf uitvoeren.
Ik presenteer hier een eenvoudig script dat verjaardagen toevoegt, maar het is uit te breiden naar afspraken met begin- en eindtijd en nog meer mogelijkheden.

Ik heb een Google Sheetblad gemaakt met 5 kolommen:
NaamDatumOmschrijvingGeboren teStatus





In principe hoeven alleen naam en datum te worden ingevuld.

In Google Calendar maak je een nieuwe kalender aan. Ga naar de instellingen en zoek de Agenda-ID op. Die heb je nodig in het script. Ga daarvoor in je Sheet naar Extra, Scripteditor...
Kopieer het script hieronder en plak het in de editor. Geef je script een naam en sla het op. Vergeet niet de juiste Agenda-ID in de code te plaatsen!

//Script om verjaardagen vanuit een spreadsheet in een kalender te plaatsen

//FUNCTIE Voegt menu items toe als de sheet wordt geopend
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({name: "Toevoegen", functionName: "addEvents"});
  sheet.addMenu("Verjaardagen", menuEntries);
}

//FUNCTIE stuurt verjaardagen naar de kalender
function addEvents() {

  //spreadsheet variabelen
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues(); 

  //kalender variabelen
  var calendar = CalendarApp.getCalendarById('hier-komt-de-agenda-ID-te staan') //vul je kalender ID in

  for (var i = 1; i < values.length; i++) {   
    if (values[i][4] != 'Toegevoegd') { 
      var titel = values[i][0];
      var datum = new Date(values[i][1]);
      var omschrijving = values[i][2];
      var locatie = values[i][3];
      var iederJaar = CalendarApp.newRecurrence().addYearlyRule();   
       var opties = {
        description: omschrijving,
        location: locatie,
       };
   
      var event = calendar.createAllDayEventSeries(titel, datum, iederJaar, opties);
          event.setColor('4');
     
      //noteer als toegevoegd
      sheet.getRange(i+1,5).setValue('Toegevoegd');
      }
   }
}

Als je nu de sheet opnieuw laadt zul je zien dat er een knop Verjaardagen bij is gekomen in de menubalk, rechts naast Help.

Vul de sheet nu met wat gegevens en klik op: Verjaardagen, Toevoegen.
Ga naar de betreffende kalender en je zult zien dat de data zijn toegevoegd!

Alleen de velden Naam en Datum zijn verplicht. De rest is optioneel. Door het getal in event.setColor('4'); te veranderen (een getal tussen 1 en 11) kun je de items die geplaatst worden een andere kleur geven.

Dit script is eenvoudig uit te breiden voor meer functionaliteit. Meer daarover misschien in een volgende blogpost!

In onderstaande screencast laat ik alles zien en leg ik uit waar de kolom Status voor nodig is.

Geen opmerkingen:

Een reactie posten