Jan E
Jan E

Reputation: 11

Cant compare content of two textboxes in google script

I've setup UI, seemes to work.

I want to check if two textboxes are NOT empty and then do something.

Showing the script involving the topic below and can add whole function if needed.

Anyone can help me out? Current code generates a message that length cant be retrieved.

Last: log says everything is undefined except for app when running debug for handlerFunction

function handlerFunction(eventInfo) 
  {   
   var app=UiApp.getActiveApplication();
   var parameter = eventInfo.parameter;
  var panel = parameter.panel;
  var source = parameter.source;
  var text100 = parameter.text100;
  var text101 = parameter.text101; 
  var text102 = parameter.text102;
  var text103 = parameter.text103;
  var text104 = parameter.text104;
  var text105 = parameter.text105;
  var text106 = parameter.text106;
  var stations=parameter.stations;
  var stations2=parameter.stations2;
  var systems = parameter.systems;
  var systems2 = parameter.systems2;
  var products=parameter.products;
  var products2=parameter.products2;
  var but200 = parameter.but200;
  var but201 = parameter.but201; 

 switch (source)    
   {
        case '1':
            var app=UiApp.getActiveApplication();
            app.getElementById('text100').setText(systems)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '2':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text101').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '3':
            var app=UiApp.getActiveApplication();
            app.getElementById('text102').setValue(products)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

               case '4':
            var app=UiApp.getActiveApplication();
            app.getElementById('text10').setText(systems2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '5':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text11').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '6':
            var app=UiApp.getActiveApplication();
            app.getElementById('text12').setValue(products2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;


        case '200': // SAVE button cliked
         var app=UiApp.getActiveApplication();

        // var parameter = eventInfo.parameter;
        var test1=app.getElementById('text100').setText(parameter.text.length);
        var test2=app.getElementById('text101').setText(parameter.text.length);

            if (test1 >= '1' && test2 >= '1')
            {
              app.getElementById('text103').setValue('123');

            }

               return app;
          break;     

    }

 }

Upvotes: 0

Views: 72

Answers (3)

Jan E
Jan E

Reputation: 11

Problem solved, not saying its elegant :)

Scriptcode down below.

Thanks for Your interests, see you.

regards

     function handlerFunction(eventinfo) 
  {   
  var app=UiApp.getActiveApplication();
  var parameter =eventinfo.parameter;
  var panel = parameter.panel;
  var source = parameter.source;
  var text100 = parameter.text100;
  var text101 = parameter.text101; 
  var text102 = parameter.text102;
  var text103 = parameter.text103;
  var text104 = parameter.text104;
  var text105 = parameter.text105;
  var text106 = parameter.text106;
  var stations=parameter.stations;
  var stations2=parameter.stations2;
  var systems = parameter.systems;
  var systems2 = parameter.systems2;
  var products=parameter.products;
  var products2=parameter.products2;
  var but200 = parameter.but200;
  var but201 = parameter.but201; 


     switch(parameter.source) 
     {   
        case '1':
            var app=UiApp.getActiveApplication();
       app.getElementById('text100').setText(systems)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '2':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text101').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '3':
            var app=UiApp.getActiveApplication();
            app.getElementById('text102').setValue(products)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

               case '4':
            var app=UiApp.getActiveApplication();
            app.getElementById('text10').setText(systems2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '5':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text11').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '6':
            var app=UiApp.getActiveApplication();
            app.getElementById('text12').setValue(products2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;


        case '200': // SAVE button cliked
        var app=UiApp.getActiveApplication();
        var val1=parameter.text100.length;
        var val2=parameter.text101.length;   

        if (val1 !=0 && val2 !=0 )
            {
              app.getElementById('text103').setValue(val1);

              return app;
            }
        break;
    }

}

Upvotes: 1

Jan E
Jan E

Reputation: 11

heres all scripts.

    function doGet() {

var app = UiApp.createApplication();
  app.setStyleAttribute("background", '#aaaaaa').setStyleAttribute("color", "white");
  app.setTitle("Elite Dangerous trading");
  app.setHeight('1100');
  app.setWidth('1850');




//  drawui();

     var app=UiApp.getActiveApplication();
  //create panel 
  var panel = app.createAbsolutePanel();
  panel.setStyleAttribute("position",0);
  panel.setStyleAttribute("height",1100);
  panel.setStyleAttribute("width",1850);
  panel.setStyleAttribute('backgroundImage',"url('http://www.incgamers.com/wp-content/uploads/2014/07/elite-dangerous.jpg')");

  var handle = app.createServerHandler("handlerFunction");
  // create grid1
 var mygrid1 = app.createGrid(3, 4)
 .setStyleAttribute("background", '#5F9EF5')
 .setBorderWidth(3)
 .setCellSpacing(8)
 .setCellPadding(8);


  // create grid2
 var mygrid2 = app.createGrid(3, 4)
 .setStyleAttribute("background", '#754F0E')
 .setBorderWidth(3)
 .setCellSpacing(8)
 .setCellPadding(8);

  // create 3 listboxes with handle for save

var systems = app.createListBox().setId('1').setName('systems').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');

var stations = app.createListBox().setId('2').setName('stations').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');

var products = app.createListBox().setId('3').setName('products').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');


  // create 3 listboxes with handle for show

var systems2 = app.createListBox().setId('4').setName('systems2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');

var stations2 = app.createListBox().setId('5').setName('stations2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');

var products2 = app.createListBox().setId('6').setName('products2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');



  //create 4 read only text boxes 

var text1 = app.createTextBox()
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text1')
    .setId('text1')
    .setText("System input")
    .setWidth(200)    
    .setReadOnly(true);


    var text2 = app.createTextBox()
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text2')
    .setId('text2')
    .setText("Station input")
    .setWidth(200)    
    .setReadOnly(true);


    var text3 = app.createTextBox()
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text3')
    .setId('text3')
    .setText("Product input")
    .setWidth(200)    
    .setReadOnly(true);


    // price pr. item textbox
     var text4= app.createTextBox()
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text4')
    .setId('text4')
    .setText("Station sellingprice a piece")
    .setWidth(200)    
    .setReadOnly(true);




    //create 4 read only text boxes for textbox showfields showing

var text9 = app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text9')
    .setId('text9')
    .setWidth(200)    
    .setReadOnly(true);


    var text10= app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text10')
    .setId('text10')
    .setWidth(200)    
    .setReadOnly(true);


    var text11 = app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text11')
    .setId('text11')
    .setWidth(200)    
    .setReadOnly(true);


    // price pr. item textbox
     var text12= app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text12')
    .setId('text12')
    .setWidth(200)    
    .setReadOnly(true);


      //create 4 read only text boxes for textbox showfields showing

var text5 = app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text5')
    .setId('text5')
    .setText("System")
    .setWidth(200)    
    .setReadOnly(true);


    var text6 = app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text6')
    .setId('text6')
    .setText("Station")
    .setWidth(200)    
    .setReadOnly(true);


    var text7 = app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text7')
    .setId('text7')
    .setText("Product")
    .setWidth(200)    
    .setReadOnly(true);


    // price pr. item textbox
     var text8= app.createTextBox()
    .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
    .setName('text8')
    .setId('text8')
    .setText("Station sellingprice a piece")
    .setWidth(200)    
    .setReadOnly(true);


 // create 4 textboxes 100,101,102,103, from which to save system,station,products input

     var text100 = app.createTextBox().addChangeHandler(handle)
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text100')
    .setId('text100')
    .setText("")
    .setWidth(200)    
    .setReadOnly(false);

     var text101= app.createTextBox().addChangeHandler(handle)
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text101')
    .setId('text101')
    .setText("")
    .setWidth(200)    
    .setReadOnly(false);

     var text102 = app.createTextBox().addChangeHandler(handle)
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text102')
    .setId('text102')
    .setText("")
    .setWidth(200)    
    .setReadOnly(false);


     var text103 = app.createTextBox().addChangeHandler(handle)
    .setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
    .setName('text103')
    .setId('text103')
    .setText("")
    .setWidth(200)    
    .setReadOnly(false);



 //create  submit buttons
  var inputbutton = app.createButton().addClickHandler(handle)
  .setStyleAttribute("background", '#0000FF').setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
  .setId('200')
  .setWidth(80)
  .setHeight(80)
  .setText("SAVE");



 //create  submit buttons
  var showbutton = app.createButton().addClickHandler(handle)
  .setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
  .setId('201')
  .setWidth(80)
  .setHeight(80)
  .setText("SHOW");


  // fill listboxes save

  //Open the spreadsheet and get the sheet objects
var openedSS = SpreadsheetApp.openById("15tGpfnt72_yxVcO3Kp0wFBLfYpf8nr3vZCteprtX_Ss");
var sheetList1 = openedSS.getSheetByName("data");//Spreadsheet must match with sheet name

numItemList1 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list1ItemArray = sheetList1.getRange(2,1,numItemList1,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list1ItemArray.length; i++){
    products.addItem(list1ItemArray[i][0]);
    }
  i=0;


numItemList2 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list2ItemArray = sheetList1.getRange(2,3,numItemList2,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list2ItemArray.length; i++){
    stations.addItem(list2ItemArray[i][0]);
    }
  i=0;


  numItemList3 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list3ItemArray = sheetList1.getRange(2,5,numItemList3,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list3ItemArray.length; i++){
    systems.addItem(list3ItemArray[i][0]);
    }
  i=0;


   // fill listboxes read

  //Open the spreadsheet and get the sheet objects
// var openedSS = SpreadsheetApp.openById("15tGpfnt72_yxVcO3Kp0wFBLfYpf8nr3vZCteprtX_Ss");
// var sheetList1 = openedSS.getSheetByName("data");//Spreadsheet must match with sheet name

numItemList4 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list4ItemArray = sheetList1.getRange(2,1,numItemList1,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list4ItemArray.length; i++){
    products2.addItem(list4ItemArray[i][0]);
    }
  i=0;


numItemList5 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list5ItemArray = sheetList1.getRange(2,3,numItemList2,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list5ItemArray.length; i++){
    stations2.addItem(list5ItemArray[i][0]);
    }
  i=0;


  numItemList6 = sheetList1.getLastRow()-1;//-1 is to exclude header row
  //get the item array
  list6ItemArray = sheetList1.getRange(2,5,numItemList3,1).getValues();
  //Add the items in ListBox
  for(var i=0; i<list6ItemArray.length; i++){
    systems2.addItem(list6ItemArray[i][0]);
    }
  i=0;


// fill up grid

  mygrid1.setWidget(0, 0, text1);
  mygrid1.setWidget(0, 1, text2);
  mygrid1.setWidget(0, 2, text3);
  mygrid1.setWidget(0, 3, text4);
  mygrid1.setWidget(1, 3, text103);
  mygrid1.setWidget(1, 0, text100);
  mygrid1.setWidget(1, 1, text101);
  mygrid1.setWidget(1, 2, text102);
  mygrid1.setWidget(2, 0, systems);
  mygrid1.setWidget(2, 1, stations);
  mygrid1.setWidget(2, 2, products);
  panel.add(mygrid1,24,100);
  panel.add(inputbutton,436,270);


  mygrid2.setWidget(0, 0, text5);
  mygrid2.setWidget(0, 1, text6);
  mygrid2.setWidget(0, 2, text7);
  mygrid2.setWidget(0, 3, text8);
  mygrid2.setWidget(1, 3, text9);
  mygrid2.setWidget(1, 0, text10);
  mygrid2.setWidget(1, 1, text11); 
  mygrid2.setWidget(1, 2, text12);
  mygrid2.setWidget(2, 0, systems2);
  mygrid2.setWidget(2, 1, stations2);
  mygrid2.setWidget(2, 2, products2);
  panel.add(mygrid2,24,570);
  panel.add(showbutton,436,740);




//add the panel to the application
  app.add(panel);

// add callbacks


 handle.addCallbackElement(inputbutton)
       .addCallbackElement(showbutton)
       .addCallbackElement(text100)
       .addCallbackElement(text101)
       .addCallbackElement(text102)
       .addCallbackElement(text103)
       .addCallbackElement(text9)
       .addCallbackElement(text10)
       .addCallbackElement(text11)
       .addCallbackElement(text12)
       .addCallbackElement(systems)
       .addCallbackElement(stations)
       .addCallbackElement(products2)
       .addCallbackElement(systems2)
       .addCallbackElement(stations2)
       .addCallbackElement(products2)
       .addCallbackElement(panel);




  var doc = SpreadsheetApp.getActive();
  doc.show(app);
   return app;

}


 function handlerFunction(eventInfo) 
  {   
  var app=UiApp.getActiveApplication();
  var parameter = eventInfo.parameter;


   // There's a lot of information in 'parameter' about the event too, but we'll focus here
   // only on the callback elements.
  var panel = parameter.panel;
  var source = parameter.source;
  var text100 = parameter.text100;
  var text101 = parameter.text101; 
  var text102 = parameter.text102;
  var text103 = parameter.text103;
  var text104 = parameter.text104;
  var text105 = parameter.text105;
  var text106 = parameter.text106;
  var stations=parameter.stations;
  var stations2=parameter.stations2;
  var systems = parameter.systems;
  var systems2 = parameter.systems2;
  var products=parameter.products;
  var products2=parameter.products2;
  var but200 = parameter.but200;
  var but201 = parameter.but201; 
  var test1 = parameter.test1;  
  var test2 = parameter.test2;  


     switch (source)    
   {
        case '1':
            var app=UiApp.getActiveApplication();
       app.getElementById('text100').setText(systems)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '2':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text101').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '3':
            var app=UiApp.getActiveApplication();
            app.getElementById('text102').setValue(products)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

               case '4':
            var app=UiApp.getActiveApplication();
            app.getElementById('text10').setText(systems2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '5':

            // get the value of last changed element in listbox written to editbox
            var app=UiApp.getActiveApplication();
            app.getElementById('text11').setValue(stations)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;

        case '6':
            var app=UiApp.getActiveApplication();
            app.getElementById('text12').setValue(products2)
            .setStyleAttribute('textAlign', 'center');
            return app;
        break;


        case '200': // SAVE button cliked
         var app=UiApp.getActiveApplication();
       var parameter = eventInfo.parameter;


        // var parameter = eventInfo.parameter;
     //   var test1=app.getElementById('text100').setText(parameter.text.length);
     //   var test2=app.getElementById('text101').setText(parameter.text.length);

       var test1=app.getElementById('text100').setValue(text100);
       var test2=app.getElementById('text101').setValue(text101);

            if (test1 >= '1' && test2 >= '1')
            {
              app.getElementById('text103').setValue('123');

            }

            return app;
          break;


    }



 }

Upvotes: 0

Alan Wells
Alan Wells

Reputation: 31310

Try changing this line:

var test1=app.getElementById('text100').setText(parameter.text.length);

to this:

var test1=app.getElementById('text100').setText(eventInfo.parameter.text.length);

I just added eventInfo.

That's how it's used in the example in the documentation:

Google Documentation - Class TextBox

Upvotes: 0

Related Questions