15 december 2017

Events vanuit sheets toevoegen aan een kalender

In de vorige blogpost liet ik zien hoe je een jaarlijks terugkeren gebeurtenis, zoals een verjaardag, vanuit een Google Sheet kunt toevoegen aan een kalender.
In dit bericht een variant daarop, namelijk een eenmalige gebeurtenis. Veel van de code is hetzelfde, maar het commando dat de gegevens naar de kalender verstuurt is net even anders.

Ik heb nu een Google Sheetblad gemaakt met 5 kolommen:
TitelDatumOmschrijvingLocatieKleurStatus






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 afspraken 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("Kalender", menuEntries);
}

//FUNCTIE stuurt afspraken 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][5] != 'Toegevoegd') { 
      var titel = values[i][0];
      var datum = new Date(values[i][1]);
      var omschrijving = values[i][2];
      var locatie = values[i][3];
      var kleur = values[i][4];
       var opties = {
        description: omschrijving,
        location: locatie,
       };
   
      var event = calendar.createAllDayEvent(titel, datum, opties);
          event.setColor(kleur);
     
      //noteer als toegevoegd
      sheet.getRange(i+1,6).setValue('Toegevoegd');
      }
   }
}

Als je nu de sheet opnieuw laadt zul je zien dat er een knop Kalender bij is gekomen in de menubalk, rechts naast Help.
Vul de sheet nu met wat gegevens en klik op: Kalender, Toevoegen.
Ga naar de betreffende kalender en je zult zien dat de data zijn toegevoegd!

Alleen de velden Titel en Datum zijn verplicht. De rest is optioneel. Door het getal in de kolom Kleur te veranderen (een getal tussen 1 en 11) kun je de items die geplaatst worden een andere kleur geven.

2 opmerkingen:

  1. Is het ook mogelijk om op dezelfde wijze een afspraak aan te maken met begin en eindtijd?
    vb afspraak op 20-12-2017 van 15:00 tot 16:00

    BeantwoordenVerwijderen
  2. @Guy,
    Daar ben ik inderdaad al druk mee bezig en ik heb inmiddels een werkend concept, maar ben nog niet helemaal tevreden. Als het klaar is wordt dat wel de volgende blogpost...

    BeantwoordenVerwijderen