以下の関数を使用してload_table()
、Google ドキュメント スプレッドシートのコンテンツをハッシュ変数に読み込みますtbl
。ヘルパー関数を使用すると、が とともに内に表示され、スプレッドシートからのデータも含まれていることがわかります (test_hash()
は定数です)。すべてが期待どおりです。tbl
load_table()
bt
cod
st
cod
これらすべての変数を別のハッシュ変数に入れて返そうとすると、他の変数が期待どおりにあるのに、何らかの理由で空白になりres
ますtbl
。tbl
なぜこれが起こっているのですか?ありがとう。
function load_table( ss_data , colPos ) {
// create hash from ss_data
// ========================
var bt = [];
var st = [];
var tbl = [];
var cod = '';
for (var i = 1; i < 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()
は単純なデバッグ関数です:
function test_hash( h ) {
Logger.log( " --------- HASH START -------- " );
for ( var index in h ){
Logger.log( index + ':' + h[index] )
}
Logger.log( " --------- HASH END -------- " );
}
これは対応するdoGet()
関数です:
function doGet(){
// counts by 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 );
}