Search code examples
javascriptreturnspreadsheet

Google spreadsheet custom function returns nothing


I have a problem debugging the code. It's working if I define values by myself instead of taking it from properties and spreadsheet. I am new to JavaScript so it can be really basic error.

What I am trying to do with this function:

  1. Taking name of person, date and name of school from the spreadsheet
  2. Getting arrays data from the properties that was saved with other function. The saving line in that function looks like this:

    PropertiesService.getScriptProperties().setProperty('Mokyklo‌​s', JSON.stringify(Mokyklos));
    

It's 6 arrays of full names, array of date, array of school names and array of numbers. The numbers array is used to return the answer.

      function ApmokMokMokykloje(mokytojas, data, mokykla) {      
      Utilities.sleep(Math.random() * 1000);
      var MokytojaiL = PropertiesService.getScriptProperties().getProperty('MokytojaiL');
      var Mokytojai1 = PropertiesService.getScriptProperties().getProperty('Mokytojai1');
      var Mokytojai2 = PropertiesService.getScriptProperties().getProperty('Mokytojai2');
      Utilities.sleep(Math.random() * 1000);
      var Mokytojai3 = PropertiesService.getScriptProperties().getProperty('Mokytojai3');
      var Mokytojai4 = PropertiesService.getScriptProperties().getProperty('Mokytojai4');
      var Mokytojai5 = PropertiesService.getScriptProperties().getProperty('Mokytojai5');
      Utilities.sleep(Math.random() * 1000);
      var Datos = PropertiesService.getScriptProperties().getProperty('Datos');
      var Mokyklos = PropertiesService.getScriptProperties().getProperty('Mokyklos');
      var ApmokMokSkaiciai = PropertiesService.getScriptProperties().getProperty('ApmokMokSkaiciai');


      var mokytojaiL = MokytojaiL;
      mokytojaiL = JSON.parse(mokytojaiL);

      var mokytojai1 = Mokytojai1;
      mokytojai1 = JSON.parse(mokytojai1);

      var mokytojai2 = Mokytojai2;
      mokytojai2 = JSON.parse(mokytojai2);

      var mokytojai3 = Mokytojai3;
      mokytojai3 = JSON.parse(mokytojai3);

      var mokytojai4 = Mokytojai4;
      mokytojai4 = JSON.parse(mokytojai4);

      var mokytojai5 = Mokytojai5;
      mokytojai5 = JSON.parse(mokytojai5);

      var datos = Datos;
      datos = JSON.parse(datos);

      var mokyklos = Mokyklos;
      mokyklos = JSON.parse(mokyklos);

      var skaicius = ApmokMokSkaiciai;
      skaicius = JSON.parse(skaicius);


      for(var i = 0; i < mokyklos.length; i++) { 
        if(data==datos[i] && mokykla==mokyklos[i]) { 
        if ((mokytojas==mokytojaiL[i]) || (mokytojas==mokytojai1[i]) || (mokytojas==mokytojai2[i]) || (mokytojas==mokytojai3[i]) || (mokytojas==mokytojai4[i]) || (mokytojas==mokytojai5[i]))  {
        return skaicius[i]; // returns blank
            }
          }
        }

    }

The code below works fine.

function testas3(mokytojas, data, mokykla) {

  // the same values from spreadsheet
  var datapvz="2017-11-04T22:00:00.000Z";
  var mokyklapvz="Zalioji mokykla";
  var mokytojaspvz="Penivilas Gremlinavičius";

  // the same values from properties 
  var datos = [];
datos[0]="2017-11-08T22:00:00.000Z";
datos[1] = "2017-11-15T22:00:00.000Z";
datos[2] = "2017-11-11T22:00:00.000Z";
datos[3] = "2017-11-03T22:00:00.000Z";
datos[4] = "2017-11-04T22:00:00.000Z";
  var mokyklos = [];
mokyklos[0] = "Mokykla nuostabioji";
mokyklos[1] = "Mylimiausioji mokyklele";
mokyklos[2] = "Dar viena mokyykla";
mokyklos[3] = "Raudonoji";
mokyklos[4] = "Zalioji mokykla";
  var mokytojaiL = [];
mokytojaiL[0] = "Cristopher Rangel";
mokytojaiL[1] = "Alessandra Knox";
mokytojaiL[2] = "Germtautas Falalavičius";
mokytojaiL[3] = "Lenkgaudė Trikojytė";
mokytojaiL[4] = "Penivilas Gremlinavičius";
var mokytojai1 = [];
mokytojai1[0] = "Mantvydas Špukys";
mokytojai1[1] = "Išeikbaida Visursėkmytė";
mokytojai1[2] = "Svaidgaudė Praperduvienė";
mokytojai1[3] = "Mantvinas Žirgmyla";
mokytojai1[4] = "Mantvinas Žirgmyla";
var mokytojai2 = [];
mokytojai2[0] = "Griovbaida Nepriteklytė";
mokytojai2[1] = "Išeikbaida Visursėkmytė";
mokytojai2[2] = "Griovbaida Nepriteklytė";
mokytojai2[3] = "Arjautauta Fragmentavičiutė";
mokytojai2[4] = "Kastuvaldas Parašiutauskas";
var mokytojai3 = [];
mokytojai3[0] = "Rustautas Celiulionis";
mokytojai3[1] = "Androbauda Parankpapaitė";
mokytojai3[2] = "Arjauvilė Katrakojytė";
mokytojai3[3] = null;
mokytojai3[4] = "Rustautas Celiulionis";
var mokytojai4 = [];
mokytojai4[0] = null;
mokytojai4[1] = null;
mokytojai4[2] = null;
mokytojai4[3] = "Arjauvilė Katrakojytė";
 var mokytojai5  = [];
  var skaicius = [];
skaicius[0]="99";
skaicius[1]="98";
skaicius[2]="87";
skaicius[3]="89";
skaicius[4]="89";


      for(var i = 0; i < mokyklos.length; i++) { 
       if(datapvz==datos[i] && mokyklapvz==mokyklos[i]) { 
        if ((mokytojaspvz==mokytojaiL[i]) || (mokytojaspvz==mokytojai1[i]) || (mokytojaspvz==mokytojai2[i]) || (mokytojaspvz==mokytojai3[i]) || (mokytojaspvz==mokytojai4[i]) || (mokytojaspvz==mokytojai5[i]))
        {
         return skaicius[i]; // returns 89
        }
      }
    }

}

Solution

  • I think the problem is that you're comparing a Date object (from the spreadsheet...e.g., from cell F$1) with a string literal (from your saved JSON object). To make them match, you should call toJSON() on the date object before comparing, like this:

    var date = data.toJSON();
    for(var i = 0; i < mokyklos.length; i++) { 
        if(date==datos[i] && mokykla==mokyklos[i]) { 
            if ((mokytojas==mokytojaiL[i]) || (mokytojas==mokytojai1[i]) || (mokytojas==mokytojai2[i]) || (mokytojas==mokytojai3[i]) || (mokytojas==mokytojai4[i]) || (mokytojas==mokytojai5[i]))  {
                return skaicius[i];
            }
        }
    }