0

チェックボックスの入力値 (true/false) を .setName(chk_id) で取得したいのですが、id は、flexTable セルごとに導入した行の id です。しかし、e.parameter.chk_iが「未定義」であるため、常に「e.parameter_「未定義」」になります

var flexTableReg = app.createFlexTable().setId("flexTableReg").setBorderWidth(1);
var check = new Array(lastRow);

for(var r = 0; r < lastRow; r++){
  for(var c = 0; c < lastCol; c++){
    var text = rowsToConfirm[r][c].toString();//HERE IS THE CELL
    flexTableReg.setText(r+1, c, text);


  }
  var id = rowsToConfirm[r][0];
  check[r] = app.createCheckBox().setName("chk_"+id).setId("chk_"+id);
  flexTableReg.setWidget(r+1, lastCol, check[r]);
}//end fors
}//end if

 var botMod = app.createButton().setText("Activar").setId("botStatus");
 var botHandle =  app.createServerHandler("changeStatus").addCallbackElement(verticalPanelAdmin);
 botMod.addClickHandler(botHandle);

mainPanelAdmin.add(flexTableReg);
mainPanelAdmin.add(botMod);
verticalPanelAdmin.add(mainPanelAdmin);
absolutePanelAdmin.add(verticalPanelAdmin);
app.add(absolutePanelAdmin);

return app;
}

function changeStatus(e){
  var ss = SpreadsheetApp.openById(LOGS_SHEET_ID);
  var app = UiApp.getActiveApplication();
  var datarray = getDataArray();
  var lastRow = ss.getLastRow();

  for(var i =0; i<=lastRow;i++ ){
    try{
      var par =  e.parameter["chk_"+i];


      if(true){
        stop_if_true
        var row = getRowByID(0,lastRow,i);
         ss.getRange("E"+i).setValue("1");
      }//end if     
    }catch(e){e.parameter_"undefined"  //if e.parameter "undefined"
          return app;}
}//end for
 return app;
 }; 
4

1 に答える 1

0

何が返されているのかわかりませんがvar id = rowsToConfirm[r][0];、.setName() および .setId() プロパティを設定するときに元の id パラメータとして使用しているものです。

コールバック関数で値を取得しようとすると、i衝突する可能性がある数値パラメーターを使用します。

次に、チェックボックスの戻り値は常に文字列なので、 or の代わりに or をチェック'true''false'trueくださいfalse

お役に立てれば、

挨拶します。

于 2012-09-18T18:52:59.780 に答える