以下のコードは私に頭痛の種を与えています。これは、2つのラジオボタンと1つのボタンを備えた非常にシンプルなアプリケーションです。このアプリのアイデアは、選択したラジオボタンの値をスプレッドシートに記録することです。ここで、最初のラジオボタン(「1」)を選択してから2番目のラジオボタン(「2」)に変更してから「1」に戻り、「録音」ボタンをクリックすると、アプリは3回録音します。スプレッドシート。それは一種の選択を蓄積します。
私が自分自身を明確にしたかどうかはわかりませんが、問題をシミュレートする手順は次のとおりです。
1-以下のアプリケーションを実行します。2-ラジオボタン「1」を選択し、次に「2」と「1」をもう一度選択して、「記録」ボタンを押します。3-スプレッドシートで値が重複していないか確認します。
ラジオボタンをクリックし続けるほど、重複した値が記録されます。
なぜこれが起こるのか、そしてどうすればこの問題を克服できるのか、何か考えはありますか?
function myAppFunction() {
var mydoc = SpreadsheetApp.getActiveSpreadsheet();
var app = UiApp.createApplication().setTitle('Here is the title bar');
var panel = app.createVerticalPanel().setId('panel');
//using setName will give you the ability to get the value
var myRadio1 = app.createRadioButton("group","one").setName('myRadio1').setId('myRadio1');
var myRadio2 = app.createRadioButton("group","two").setName('myRadio2').setId('myRadio2');
var button = app.createButton("Gravar").setId("record_");
//A label will be used to give feedback on the value of the checkBox
var infoLabel = app.createLabel('Check the box and click submit').setId('infoLabel');
//handlers
var handler = app.createServerChangeHandler('radio1');
handler.addCallbackElement(panel);
myRadio1.addClickHandler(handler);
var handler2 = app.createServerChangeHandler('radio2');
handler2.addCallbackElement(panel);
myRadio2.addClickHandler(handler2);
//put everything in the UI
panel.add(myRadio1);
panel.add(myRadio2);
panel.add(button);
panel.add(infoLabel);
app.add(panel);
mydoc.show(app);
}
function radio1(e){
var app = UiApp.getActiveApplication();
app.getElementById('myRadio2').setValue(false);
app.getElementById('infoLabel').setText('one is: ' + e.parameter.myRadio1);
var panel = app.getElementById("panel");
var button = app.getElementById("gravar");
var handler = app.createServerClickHandler("record_");
handler.addCallbackElement(panel);
button.addClickHandler(handler);
return app;
}
function radio2(e){
var app = UiApp.getActiveApplication();
app.getElementById('myRadio1').setValue(false);
app.getElementById('infoLabel').setText('two is: ' + e.parameter.myRadio2);
var button = app.getElementById("gravar");
var handler = app.createServerClickHandler("gravar_");
handler.addCallbackElement(app.getElementById("panel"));
button.addClickHandler(handler);
return app;
}
function record_(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var lastRow = sheet.getLastRow();
var freeCell = sheet.getRange("A1").offset(lastRow, 0);
freeCell.setValue(e.parameter.myRadio1);
}