Résolu Aide script Google - Débuggage

  • Auteur de la discussion Vijuro
  • Date de début

Vijuro

Nouveau membre
Bonjour,

Novice en programmation, je butte sur l'intégration des variable Dates ds la fonction getEvents d'un script pour Google spreadsheet visant à récupérer les évènements d'agendas Google. Le débugger Google indique "TypeError: Impossible d'appeler la méthode "getEvents" de null. (ligne 21, fichier "Getcalendar")". voici mon code. Quelqu'un peut-il me dire ce qu'il faut changer ? merci déjà !

C:
function Getcalendar() {
  //Ce script va chercher les évènements d'un agenda Google et
  //les affiche ds le tableur courant (onglet "Agenda").
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Agenda");
  var sheetP = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Parametres");
  
  // ensemble des adresses emails à prendre en compte
  var dataRange = sheetP.getRange("B5:B15");
  
  var data = dataRange.getValues();
  
  var count = dataRange.getNumRows();
  var cell = sheetP.getRange("B2");
  var dateDeb = cell.getValue();
  var cell = sheetP.getRange("B3");
  var dateFin = cell.getValue();
  for (var i=0;i<count;i++){
    var emailAddress = data[i][0];
    var cal = CalendarApp.getCalendarById(emailAddress);
    // Selection d'une période
    var events = cal.getEvents(dateDeb, dateFin);
    // Nombre d'éléments à récupérer ex : ici 2 (temps de départ, titre)
    var nbElement = 3;
    // Calcul de la prochaine colonne à remplir
    var startColumn = nbElement*i+4;
    var startRow = 40;
    // Clean data
    // définition de la zone à effacer
var cleanRange = sheet.getRange(startRow,startColumn,50,2);
cleanRange.clearContent();
    for (var j=0;j<events.length;j++) {
        var details=[[events[j].getStartTime(), events[j].getTitle()]];
        var eventRow=startRow+j;
        var range=sheet.getRange(eventRow,startColumn,1,2);
        range.setValues(details);
      }
    
  }
}
 

zeb

Modérateur
Modérator dixit : merci de respecter le règlement. Toute pièce de code doit être présentée entre les balises [code=c] et [/code].
 

KyrO_82

Grand Maître
Meilleure réponse
Salut,

"Impossible d'appeler la méthode "getEvents" de null."
Ça veut dire que l'objet dans lequel tu appelle la fonction "getEvents" n'existe pas, il est nul.
Autrement dit, ta variable "cal" ne vaut rien (=null), c'est donc la fonction "CalendarApp.getCalendarById(emailAddress);" qui ne retourne rien. Vérifie cette ligne donc, il doit y avoir une erreur quelque-part.

C'est probablement l'argument que tu lui passes, emailAddress, qui contient une valeur non-attendue, qu'il ne comprend pas. Celle ci doit être du style "en.usa#holiday@group.v.calendar.google.com" d'après l'exemple de Google.
Il faut aussi, j'imagine, avoir les droits d'accès à ce calendrier, donc être connecté au comptes Google correspondant.
 

Vijuro

Nouveau membre
Merci !

Je comprends et tu as effectivement raison : le debugger m'indique que la var "cal" est nulle, alors que la var "emailAddress" est bien remplie par l'adresse mail d'un calendrier auquel j'ai accès !

Le plus étonnant est que dans un autre script quasi identique (où je ne distingue simplement pas les deux sheets "paramètres" et "agenda") cette ligne fonctionne et j'obtiens la liste des events !

Je poursuis donc ma recherche et espère toujours une aide !?

Merci encore !

 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 119
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut