function doGet(x) {
var tableId = ##############################;
var sql = 'SELECT * FROM ' + tableId;
var e = {};
if (typeof x === "undefined") {
e = {};
}else{
e = x.parameter;
}
var SCount = 0;
//
if(Object.keys(e).length != 0){
sql += ' WHERE';
}
Logger.log(x);
var param = ['oldapp','comic','stage','stageeqlv','pavilion','AOP','A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12','basuteki','keiba','fukkura','anisama','swim','fly','name','oldapptype','lifeclass','lifeorder','lifefamily','lifegenus'];
for(var i = 0; i < param.length;i++){
if(i < 24){
if(e[param[i]] != undefined){
sql = sql + ' ' + param[i] + ' = ' + e[param[i]];
SCount += 1;
if(SCount > 0 && SCount < Object.keys(e).length){
sql = sql + ' AND ';
}
}
}
else{
if(e[param[i]] != undefined){
sql = sql + ' ' + param[i] + ' = ' + '\'' + e[param[i]] + '\'';
SCount += 1;
if(SCount > 0 && SCount < Object.keys(e).length){
sql = sql + ' AND ';
}
}
}
}
var Rdata;
sql = sql + ';';
var res = FusionTables.Query.sql(sql);
var Rdata = [];//返り値
var Bdata = {};//バッファー
var BdataS = {};
var k = 0;
var m= 0
while(k < res.rows.length){
for(var j = 0; j < res.columns.length;j++){
for(var m = 0; m < param.length;m++){
if(res.columns[j] == param[m]){
Bdata[param[m]] = res.rows[k][j];
}
}
}
BdataS = JSON.parse(JSON.stringify(Bdata));
Rdata.push(BdataS);
k += 1;
}
return JSON.stringify(Rdata);
}
通報 ...
多分戻りが違うからうまく動かないのだと思います。
GASの場合はStringなら
ContentService.createTextOutput
で戻りを返さないといけないはずなので。気になるところはまだあるけど、まずはこれを試してみてください。。。
導入しました。いかがでしょうか?
取得出来ました!
ふぅ、良かったです。
ちなみに気になったので今後のことを考えて2点だけ。。。
1.
ここはなぜ一回stringにしたものを戻しているのでしょうか?
BdataのままRdataに入れて大丈夫だと思います。
2.whileとforどちらか統一した方がいいと思います。whileの方が無限ループバグが起こりやすいのでforを個人的にはおすすめします。
1.
Bdataで突っ込んだら参照渡しの関係でデータが狂うので、色々やった結果こうなりました。
2.
forで統一しときます。
なるほど。
Bdataの初期化をwhileの中で行えば問題ないはずです。
了解、修正して正常動作を確認しました。
よかったです。
ちなみに?name=1にするとエラーが返ってきますがこれは今のところこの状態で問題ないのでしょうか?そもそも文字列だから1じゃないか。。。なんでもないです。。。