TypeError: Cannot read property “0” undefined

Je suis un très bizarre non défini erreur:

function login(name,pass) {
  var blob = Utilities.newBlob(pass);
  var passwordencode = Utilities.base64Encode(blob.getBytes());
  var ss = SpreadsheetApp.openById("");
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var i=1;
  while (name != data[i][0]){
    Logger.log(data[i][0]);
    i++;
  }
  if (passwordencode == data[i][1]){
    UserProperties.setProperties({
      "name" :name,
      "pass" : passwordencode
      });
    Logger.log("You are logged in");
  }
  else if (passwordencode != data[i][1]) {
    Logger.log("You are not logged in");
    UserProperties.setProperties({
      "name" : "",
      "pass" : ""
      });
  }
}

à l'aide de googlescript. Celui qui est indéfini est le rapport de moment où tout(nom != data[i][0]) affirmant que vous ne pouvez pas lire de propriété "0" undefined. Ce qui est bizarre à ce sujet, Si je supprime les données[i][0] dans l'instruction while, il travaille toujours dans l'enregistreur.journal. Et partout ailleurs. Ce que le diable se passe?

EDIT: Si je change le tout à une instruction si elle fonctionne également.

de données est un tableau qui est de base 1? Normalement, ils commencent à l'indice 0...
vous devriez vérifier le parent la dimension de la matrice pour l'existence avant d'essayer d'utiliser l'enfant dimension, if(typeof(data[i])!=="undefined") et de prévenir la boucle while de sortir des limites du tableau data[i].length donnera le nombre d'éléments.
Vous êtes incrémentation i sans égard aux limites.

OriginalL'auteur IGratch | 2013-09-22