けものフレンズBBS NEO

フレンズ検索アプリを作りたい / 191

275 コメント
views
89 フォロー
191
ひねもす 2018/03/14 (水) 22:14:07 修正
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);
}
通報 ...
  • 192
    むさし 2018/03/14 (水) 22:22:56 修正 >> 191

    多分戻りが違うからうまく動かないのだと思います。
    GASの場合はStringなら ContentService.createTextOutput で戻りを返さないといけないはずなので。

    return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
    

    気になるところはまだあるけど、まずはこれを試してみてください。。。

    193
    ひねもす 2018/03/14 (水) 22:26:41 >> 192

    導入しました。いかがでしょうか?

    194

    取得出来ました!

    195
    ひねもす 2018/03/14 (水) 22:28:55 >> 192

    ふぅ、良かったです。

    196

    ちなみに気になったので今後のことを考えて2点だけ。。。

    1.

    BdataS = JSON.parse(JSON.stringify(Bdata));
    

    ここはなぜ一回stringにしたものを戻しているのでしょうか?
    BdataのままRdataに入れて大丈夫だと思います。

    2.whileとforどちらか統一した方がいいと思います。whileの方が無限ループバグが起こりやすいのでforを個人的にはおすすめします。

    197
    ひねもす 2018/03/14 (水) 22:47:59 >> 192

    1.
    Bdataで突っ込んだら参照渡しの関係でデータが狂うので、色々やった結果こうなりました。
    2.
    forで統一しときます。

    198
    むさし 2018/03/14 (水) 22:53:28 修正 >> 192

    なるほど。
    Bdataの初期化をwhileの中で行えば問題ないはずです。

    199
    ひねもす 2018/03/14 (水) 22:58:57 >> 192

    了解、修正して正常動作を確認しました。

    200
    むさし 2018/03/14 (水) 23:03:18 修正 >> 192

    よかったです。
    ちなみに?name=1にするとエラーが返ってきますがこれは今のところこの状態で問題ないのでしょうか?
    そもそも文字列だから1じゃないか。。。なんでもないです。。。