Google Sheets – Updated Method for CalendarApp.openByName

google sheetsgoogle-apps-script

We use a that gather the registration from Google Form and add them in our Agenda, our script uses the method "CalendarApp.openByName" to add the name automatically inside a Cell. It says the method is obsolete, what is the updated name for this method?

Here is the complete script:

var EVENT_IMPORTED = "AJOUTE"; // Ajoutera le texte "AJOUTE" dans la colonne N
var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() {
   var menuEntries = [{name: "Ajouter les événements à l'agenda", functionName: "importCalendar"}];
   ss.addMenu("Agenda", menuEntries); // Pour ajouter une menu Agenda et un sous-menu "ajouter les événements" dans la feuille de calcul. Cela permettra de tester manuellement la liaison entre la feuille de calcul et l'agenda
}

function importCalendar() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var startcolumn = 2;  // Première colonne de prise en compte des données, soit la colonne B (titre du rendez-vous)
    var numcolumns = 30;  // Nombre de colonne
    var dataRange = sheet.getRange(startcolumn, 1, numcolumns, 11)   // Nombre de colonne contenant des données
    var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) { 
    var column = data[i];
    var titre = column[1];        // Colonne B - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var DateDebut = column[2];    // Colonne C - date et heure de début de l'événement
    var Nom = column[3];          // Colonne E - Nom du contact
    var Adresse = column[4];      // Colonne F - Adresse
    var CP = column[5];           // Colonne G - Code postal
    var Ville = column[6];        // Colonne H - Ville
    var NumTel = column[7];       // Colonne I - Numéro de téléphone
    var Lieu = column[8];
    var Mail = column[9];    // Colonne J - Debut

    var description = "Nom du contact : "+ Nom +" // Adresse : "+ Adresse +" // Code postal : "+ CP +" // Ville : "+ Ville +" // Numéro de téléphone : "+ NumTel +" //Lieu Activité : "+ Lieu    // concatenation des champs des colonnes E à K destinée à la zone Description de l'agenda
    var eventImported = column[11];// Colonne N - Statut de l'importation - colonne AJOUTE A L'AGENDA


    var setupInfo = ss.getSheetByName("agenda"); // Nom de la feuille de calcul contenant la nom de l'agenda
    var calendarName = setupInfo.getRange("A1").getValue(); // Référence de la cellule contenant le nom de l'agenda


    if (eventImported  != EVENT_IMPORTED && titre != "") {  // Evite les doublons dans l'agenda, si le texte AJOUTE est présent en K, l'événement n'est pas ajouté
    var cal = CalendarApp.openByName(calendarName);


     cal.createEvent(titre, new Date(DateDebut), new Date(DateDebut), {description : description}); // Création de l'événement dans l'agenda avec le titre, la date de début, la date de fin et la description complète


      sheet.getRange(startcolumn + i, 11).setValue(EVENT_IMPORTED); // Nombre de colonne contenant des données

      SpreadsheetApp.flush();  
    }
  }
}

Best Answer

In the current stage, openByName() is deprecated. So please modify as follows.

From:

var cal = CalendarApp.openByName(calendarName);

To:

var cal = CalendarApp.getCalendarsByName(calendarName)[0];

Note:

  • This modification supposes that the calendar with the name of calendarName is existing only one.

Reference: