Moving item from one listBox to another - Google Apps Script
Problem Summary
Move item from first listBox to second listBox just by clicking the item in first listBox.
Details: Google Forums Discussion
References
http://code.google.com/googleapps/appsscript/class_listbox.html
http://code.google.com/googleapps/appsscript/class_hidden.html
http://code.google.com/googleapps/appsscript/class_utilities.html
Example Demo:
To try the demo, click on the items in the left hand side listbox (source). Once you click an Item, it will be moved to the Right hand side list box (destination) and that item will be removed from source list box.
Example Code:
function doGet(){
var app = UiApp.createApplication().setTitle('Test');
var panel = app.createHorizontalPanel();
var lb1 = app.createListBox(true).setId('lb1').setName('lb1').setSize('200', '200');
var itemArray = ['ITem1','ITem2','ITem3','ITem4','ITem5','ITem6','ITem7','ITem8','ITem9','ITem10','ITem11','ITem12'];
for(var i=0; i<itemArray.length; i++){
lb1.addItem(app.createLabel(itemArray[i])).setItemText(i, itemArray[i]);
}
var serializedItemArray = Utilities.jsonStringify(itemArray);
var hidden = app.createHidden().setName('updatedItemArray').setId('updatedItemArray').setValue(serializedItemArray);
var lb2 = app.createListBox(true).setId('lb2').setName('lb2').setSize('200', '200');
var handler = app.createServerHandler('_move');
handler.addCallbackElement(panel);
lb1.addClickHandler(handler);
panel.add(lb1).add(lb2).add(hidden);
app.add(panel);
return app;
}
function _move(e){
var app = UiApp.getActiveApplication();
//Get the Instances of different UI elements
var lb1 = app.getElementById('lb1');
var lb2 = app.getElementById('lb2');
var hidden = app.getElementById('updatedItemArray');
//Get the selected item value
var selectedItem = e.parameter.lb1;
Logger.log(selectedItem);
//Get the old item array from hidden elelemnt
var ItemArray = Utilities.jsonParse(e.parameter.updatedItemArray);
if(ItemArray.length > 0 && selectedItem != ''){
//Get the index of selected item in old Item array
var index = ItemArray.indexOf(selectedItem);
//Remove item from lb1
lb1.removeItem(index);
//Add item in lb2
lb2.addItem(selectedItem);
//remove the selected item from array
ItemArray.splice(index,1);
var serializedNewItemArray = Utilities.jsonStringify(ItemArray);
//Update the hidden item value with new serialized array
hidden.setValue(serializedNewItemArray);
}
return app;
}