javascript - google apps scripts: returning multiple objects -
using function load_table() below, i'm loading content of google doc spreadsheet hash variable tbl. using helper function test_hash() can see tbl visible within load_table(), along bt , cod , st contain data spreadsheet (cod constant). expected.
when try return these variables putting them hash variable res, loose tbl: reason tbl blank while other variables there expected. idea why happening? thanks.
function load_table( ss_data , colpos ) { // create hash ss_data // ======================== var bt = []; var st = []; var tbl = []; var cod = ''; (var = 1; < ss_data.length; i++) { cod = ss_data[i][0] bt[ ss_data[i][1] ] = 1; st[ ss_data[i][2] ] = 1; tbl[ ss_data[i][1] + '~' + ss_data[i][2] ] = ss_data[i][colpos]; } test_hash(tbl); var btlvls = object.keys(bt).sort(); var stlvls = object.keys(st).sort(); var res = {}; res['cod'] = cod; res['bt'] = btlvls; res['st'] = stlvls; res['tbl'] = tbl; test_hash(tbl); test_hash(res); return res; } test_hash() simple debug function:
function test_hash( h ) { logger.log( " --------- hash start -------- " ); ( var index in h ){ logger.log( index + ':' + h[index] ) } logger.log( " --------- hash end -------- " ); } this corresponding doget() function:
function doget(){ // counts yearmo var liveid = 'xxxxx' var testid = 'yyyyy' var ss = spreadsheetapp.openbyid( testid ); var data = ss.getdatarange().getvalues(); var rencat_nbtids = load_table( data , 3 ); var rencat_nstids = load_table( data , 4 ); var rencat_nsubs = load_table( data , 5 ); logger.log( rencat_nbtids ); }
as described in objects maps, arrays lists , the associative array, problem tbl associative array aka map (object) you've declared list (array).
this little change in line 8 lets tbl survive return:
var tbl = {}; 
ps: did mean start 1 in line 11? for (var = 1; ... arrays start @ 0.
Comments
Post a Comment