Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 谷歌应用程序脚本:";如果;带有单选按钮的回路&;将其写入现有的电子表格中_Forms_Google Apps Script_Google Sheets - Fatal编程技术网

Forms 谷歌应用程序脚本:";如果;带有单选按钮的回路&;将其写入现有的电子表格中

Forms 谷歌应用程序脚本:";如果;带有单选按钮的回路&;将其写入现有的电子表格中,forms,google-apps-script,google-sheets,Forms,Google Apps Script,Google Sheets,使用谷歌应用程序脚本和谷歌网站,我试图写下一个表格,并在电子表格中得到答案。 以下是我目前的工作: function doGet(){ var app = UiApp.createApplication().setTitle('Radio Button Demo'); var radio1 = app.createVerticalPanel(); var radio11 = app.createRadioButton('group1','Oui').setName('oui1').s

使用谷歌应用程序脚本和谷歌网站,我试图写下一个表格,并在电子表格中得到答案。 以下是我目前的工作:

    function doGet(){

var app = UiApp.createApplication().setTitle('Radio Button Demo');

var radio1 = app.createVerticalPanel();
var radio11 = app.createRadioButton('group1','Oui').setName('oui1').setId('oui1');
var radio12 = app.createRadioButton('group1','Non').setName('non1').setId('non1');
radio1.add(radio11).add(radio12);
app.add(radio1);

var radio2 = app.createVerticalPanel().setId('question2').setVisible(false);
var radio21 = app.createRadioButton('group2','Oui').setName('oui2').setId('oui2');
var radio22 = app.createRadioButton('group2','Non').setName('non2').setId('non2');
radio2.add(radio21).add(radio22);
app.add(radio2);

var radio3 = app.createVerticalPanel().setId('question3').setVisible(false);
var radio31 = app.createRadioButton('group3','Oui').setName('oui3').setId('oui3');
var radio32 = app.createRadioButton('group3','Non').setName('non3').setId('non3');
radio3.add(radio31).add(radio32);
app.add(radio3);

var radio4 = app.createVerticalPanel().setId('question4').setVisible(false);
var radio41 = app.createRadioButton('group4','Cool').setName('oui4').setId('oui4');
var radio42 = app.createRadioButton('group4','Or not').setName('non4').setId('non4');
radio4.add(radio41).add(radio42);
app.add(radio4);

// handler to make value of question 1 change
var handler11 = app.createServerValueChangeHandler('showstatus1_1');
handler11.addCallbackElement(radio1);
radio11.addValueChangeHandler(handler11);

var handler12 = app.createServerValueChangeHandler('showstatus1_2');
handler12.addCallbackElement(radio1);
radio12.addValueChangeHandler(handler12);

// handler to make value of question 2 change
var handler21 = app.createServerValueChangeHandler('showstatus2_1');
handler21.addCallbackElement(radio2);
radio21.addValueChangeHandler(handler21);

var handler22 = app.createServerValueChangeHandler('showstatus2_2');
handler22.addCallbackElement(radio2);
radio22.addValueChangeHandler(handler22);

// handler to make value of question 3 change
var handler31 = app.createServerValueChangeHandler('showstatus3_1');
handler31.addCallbackElement(radio3);
radio31.addValueChangeHandler(handler31);

var handler32 = app.createServerValueChangeHandler('showstatus3_2');
handler32.addCallbackElement(radio3);
radio32.addValueChangeHandler(handler32);

// handler to make value of question 4 change
var handler41 = app.createServerValueChangeHandler('showstatus4_1');
handler41.addCallbackElement(radio4);
radio41.addValueChangeHandler(handler41);

var handler42 = app.createServerValueChangeHandler('showstatus4_2');
handler42.addCallbackElement(radio4);
radio42.addValueChangeHandler(handler42);


// functions to change values of question 1
function showstatus1_1(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.oui1 
  app.getElementById('non1').setValue(false);
  app.getElementById('question2').setVisible(true);
  return app;
}

function showstatus1_2(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.non1;
  app.getElementById('oui1').setValue(false);
  app.getElementById('question2').setVisible(true);
  return app;
}

// functions to change values of question 2
function showstatus2_1(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.oui2 
  app.getElementById('non2').setValue(false);
  return app;
}

function showstatus2_2(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.non2;
  app.getElementById('oui2').setValue(false);
  return app;
}

// functions to change values of question 3
function showstatus3_1(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.oui3 
  app.getElementById('non3').setValue(false);
  return app;
}

function showstatus3_2(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.non3;
  app.getElementById('oui3').setValue(false);
  return app;
}

// functions to change values of question 4
function showstatus4_1(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.oui4 
  app.getElementById('non4').setValue(false);
  return app;
}

function showstatus4_2(e){
  var app = UiApp.getActiveApplication();
  var radioValue = e.parameter.non4;
  app.getElementById('oui4').setValue(false);
  return app;
}
我的第一个问题是如何根据问题1和2的答案使问题3和4可见。我已经根据一个问题的答案找到了如何做,但我被多个问题困扰着。 例如:如果答案是“Oui”和“Oui”,则使问题3可见,否则使问题4可见

我的第二个问题是:如何获得不同问题的价值? 我想在现有的电子表格中写下不同用户的答案和选择。但是,当我试图找到一种获得用户答案的方法时,我陷入了困境

如果你有时间,谢谢你帮我,
文森特

单选按钮在使用煤气时有点棘手。。。要正常工作,它们需要具有相同的名称,但如果它们具有相同的名称,它们将在处理程序函数中返回一个无法读取的结果,即e.parameter.radioButtonName不可用,因为它们没有区分。 不过,有一些简单的解决办法。下面是一个示例,演示如何使用ClientHandler和(可见或不可见)文本框处理该问题。还有一个处理“反向过程”的功能,即根据来自另一个小部件的数据设置单选按钮值。这会帮助你回答两个问题

function radiotest() {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var radioValue = app.createTextBox().setId('radioValue');
      radioValue.setId("radioValue").setName("radioValue");
  var listhandler = app.createServerHandler('listhandler').addCallbackElement(panel); 
  var list = app.createListBox().addChangeHandler(listhandler).setName('list');    
  for(var i = 1; i < 10; i++){
    var name = 'choice '+i;
    list.addItem('Activate '+name,name);
    var handler = app.createClientHandler().forTargets(radioValue).setText(name);
    panel.add(app.createRadioButton('radioButtonGroup',name).addValueChangeHandler(handler).setId(name));
  }
  panel.add(radioValue);
  var getit=app.createButton("Valide").setId("val");
  panel.add(getit).add(list);             
  var handler = app.createServerHandler("valide");
  handler.addCallbackElement(panel);
  getit.addClickHandler(handler);
  app.add(panel);
SpreadsheetApp.getActiveSpreadsheet().show(app);// show app 
}
//
function valide(e){ ;// This function is called when key "validate" is pressed 
  var sh = SpreadsheetApp.getActiveSheet();
  var RadioButton = e.parameter.radioValue;               
  sh.getRange('A1').setValue(RadioButton);
  var app = UiApp.getActiveApplication();
  return app;
}​

function listhandler(e){ ;// This function is called when listBox is changed
  var sh = SpreadsheetApp.getActiveSheet();
  var app = UiApp.getActiveApplication();
  var listvalue = e.parameter.list;
  var radioValue = app.getElementById('radioValue').setValue(listvalue);
  sh.getRange('A2').setValue(listvalue);
  var radiobutton = app.getElementById(listvalue);
  radiobutton.setValue(true);
return app;
}​
功能无线电测试(){
var app=UiApp.createApplication();
var panel=app.createVerticalPanel();
var radioValue=app.createTextBox().setId('radioValue');
radioValue.setId(“radioValue”).setName(“radioValue”);
var listhandler=app.createServerHandler('listhandler').addCallbackElement(面板);
var list=app.createListBox().addChangeHandler(listhandler).setName('list');
对于(变量i=1;i<10;i++){
变量名称='choice'+i;
list.addItem('激活'+名称,名称);
var handler=app.createClientHandler().forTargets(radioValue).setText(name);
panel.add(app.createRadioButton('radioButtonGroup',name.).addValueChangeHandler(handler.setId(name));
}
面板。添加(radioValue);
var getit=app.createButton(“Valide”).setId(“val”);
panel.add(getit).add(list);
var handler=app.createServerHandler(“valide”);
handler.addCallbackElement(面板);
addClickHandler(handler);
应用程序添加(面板);
SpreadsheetApp.getActiveSpreadsheet().show(app);//show app
}
//
函数valide(e){;//按下键“validate”时调用此函数
var sh=SpreadsheetApp.getActiveSheet();
var RadioButton=e.parameter.radioValue;
sh.getRange('A1').setValue(单选按钮);
var app=UiApp.getActiveApplication();
返回应用程序;
}​
函数listhandler(e){;//更改listBox时调用此函数
var sh=SpreadsheetApp.getActiveSheet();
var app=UiApp.getActiveApplication();
var listvalue=e.parameter.list;
var radioValue=app.getElementById('radioValue').setValue(listvalue);
sh.getRange('A2').setValue(listvalue);
var radiobutton=app.getElementById(listvalue);
radiobutton.setValue(真);
返回应用程序;
}​
从电子表格运行此测试,您将得到如下结果:


编辑:

根据你的意见,这里是一个有效的方法来建立这样一个多重选择问卷

函数doGet(){
var app=UiApp.createApplication().setTitle(“测试问卷”);
var panel=app.createVerticalPanel();
var sHdlr=app.createServerHandler('react').addCallbackElement(面板);
var问题=[“问题编号1:
第四种可能性的彩排”、“问题2
彩排、彩排、彩排”、“问题3
彩排的努力”、“问题4
你有没有压力……”; 变量Qitems=[‘Q1的选择’、‘Q1的选择’、‘Q1的选择’、‘Q1的选择’、[‘Q2的选择’、‘Q2的选择’、‘Q2的选择’、‘Q2的选择’], ['choix1 de Q3'、'choix2 de Q3'、'choix3 de Q3'、'choix4 de Q3']、['choix1 de Q4'、'choix2 de Q4'、'choix3 de Q4'、'choix4 de Q4']; var Qpanel=[];
对于(var n=0;nOMG,他们忘记为
RadioButton
实现
.getValue()
方法。在GWT中,您使用该方法获取当前值:))。你在bug追踪器上打开了一个问题吗?这个问题已经打开了几年了…:-)不确定它是否会改变!但解决方法很简单。谢谢Serge insas。我设法让一个应用程序作为web应用程序工作。我将尝试调整它,以将问题设置为可见或不可见。嗯,又是我…我创建了另一个多项选择问题,就像@Sergeinsas提出的第一个问题一样,首先将其设置为不可见。我想做的是,如果第一个问题的第一个选项被选中,则将其设置为可见。否则,我将其设置为不可见。我尝试使用带有e.parameter.radioValue和.toString的and if循环,但似乎不起作用:/see编辑4个问题的完整代码,一个接一个地显示出来。我在一个电子表格绑定脚本中编写了这个脚本,部署为一个网络应用程序,我可以很容易地在同一张表中得到答案,在同一个地方的所有东西都很好维护。因为你似乎会说法语,我让我的问题“混合”^^^选择Q1,但谢谢你哈。。。
function doGet() {
  var app = UiApp.createApplication().setTitle('test Questionnaire');
  var panel = app.createVerticalPanel();
  var sHdlr = app.createServerHandler('react').addCallbackElement(panel);
  var questions = ['<b>Question Numéro 1 :</b><br>Faites votre choix parmis les 4 possibilités suivantes','<b>Question 2</b><br>Encore un fois, faites votre choix','<b>Question 3</b><br>encore un effort...','<b>Question 4</b><br>vous y êtes presque...'];
  var Qitems = [['choix1 de Q1','choix2 de Q1','choix3 de Q1','choix4 de Q1'],['choix1 de Q2','choix2 de Q2','choix3 de Q2','choix4 de Q2'],
  ['choix1 de Q3','choix2 de Q3','choix3 de Q3','choix4 de Q3'],['choix1 de Q4','choix2 de Q4','choix3 de Q4','choix4 de Q4']];
  var Qpanel = [];
  for (var n=0 ; n<questions.length ; ++n){
    var Qval = app.createTextBox().setId('Qvalue'+n).setName('Qvalue'+n).setVisible(false);
    Qpanel[n] = app.createVerticalPanel().setId('QP'+n).setVisible(false).add(app.createHTML(questions[n])).add(Qval).setStyleAttribute('padding','10px');
    panel.add(Qpanel[n]);
    for(var q=0;q<Qitems[n].length;++q){
      var name = Qitems[n][q]
      var handler = app.createClientHandler().forTargets(Qval).setText(name);
      Qpanel[n].add(app.createRadioButton('radioButtonQ'+n,name).addClickHandler(handler).setId(name).addClickHandler(sHdlr));
    }
    }
    app.add(panel);
    Qpanel[0].setVisible(true);
    return app;
}

function react(e){
  var app = UiApp.getActiveApplication();
  var source = e.parameter.source;
  var answer = [];
  for(var n = 0; n < 4 ; ++n){
    answer[n] = e.parameter['Qvalue'+n];
    Logger.log('answer '+ (n+1) + ' = '+answer[n]+' source = '+source)
    }
      if(answer[0]=='choix1 de Q1'){app.getElementById('QP'+1).setVisible(true)}
      if(answer[1]=='choix1 de Q2'||answer[1]=='choix3 de Q2'){app.getElementById('QP'+2).setVisible(true)}
      if(answer[2]=='choix1 de Q3'||answer[2]=='choix3 de Q3'){app.getElementById('QP'+3).setVisible(true)}
      if(answer[3]=='choix1 de Q4'){
      app.add(app.createHTML('YESSSSSSSSS ... !!<br>Vous avez réussi !<br> vos réponses sont les suivantes : '+answer.join('  +  ')).setStyleAttribute('padding','20px'))
      }
  return app;
}