아래의 함수 load_table()
을 사용하여 Google 문서 스프레드 시트의 콘텐츠를 해시 변수 tbl
에로드하고 있습니다. 도우미 함수 test_hash()
을 사용하면 tbl
이 bt
, cod
및 st
과 함께 load_table()
내에 표시되며 스프레드 시트 (cod
은 상수 임)의 데이터도 포함되어 있습니다. 모든 것이 예상대로입니다.Google Apps 스크립트 : 여러 객체 반환
다른 해시 변수 res
에 넣어 이러한 변수를 모두 반환하려고하면 tbl
이 느슨해집니다. 어떤 이유로 인해 tbl
은 공백이며 다른 변수는 예상대로 존재합니다. 왜 이런 일이 일어나는 지 아십니까? 감사.
function test_hash(h) {
Logger.log(" --------- HASH START -------- ");
for (var index in h){
Logger.log(index + ':' + h[index])
}
Logger.log(" --------- HASH END -------- ");
}
이 대응 doGet()
함수 :
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 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);
}
이 질문은 샘플 데이터를 추가하면 개선 될 것입니다. 유효한 데이터가있는 'test()'함수가 도움이 될 것입니다. 오히려 공개 시트를 제공한다면 좋을 것입니다. 그러나 현재의 상태에서, 그렇지 않으면이 잘 쓰여진 질문은 많은 작업으로 바뀝니다. – Mogsdad