动态添加选定的比例项值

时间:2017-02-03 17:22:49

标签: google-apps-script

我正在创建一个表单,其中添加了几个SCALE类型的项目,我希望用户从1到3的等级中进行选择。

现在我想动态添加所有这些选定的值,例如sum = selected value of scaleA + ..scaleB+ ..ScaleN

到目前为止,我已设法获取所有SCALE项,但我无法获得当前选择使用的value

API仅提供以下方法getUpperBound()getLowerBound(),因为我想获取用户当前选择的值。

有没有办法实现这个目标?

注意:我想在填写表单时立即向用户显示所选值的总和。

到目前为止我写的那段代码

function myFunction() {
  var form = FormApp.getActiveForm();
  var items = form.getItems(FormApp.ItemType.SCALE);
  for (var i = 0; i < items.length; i++)
    Logger.log(items[i].getId() + ':Title ' + items[i].getTitle()+ ':ScaleItem '+items[i].asScaleItem());
}

1 个答案:

答案 0 :(得分:0)

要制作动态表单,您必须使用Google Apps脚本来创建自己的HTML服务。像所以:https://script.google.com/macros/s/AKfycby5b0Q2cuDSTl8VDIG60-9lnklAgeaZlXwmZq2slRG4h-fx6og/exec

来自Google的原生表单应用程序不能用于制作在表单生效时更新的动态表单。

Html文件:&#34; ScaleForm&#34;,代码来源:http://www.w3schools.com/tags/tag_output.asp

    <!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <div id = "formDiv">
    <form id = "scaleForm" oninput="x.value=parseInt(a.value)+parseInt(b.value)">
  0
  <input type="range"  id="a" name="a" value="0" min ="0" max ="3">
  3 <br>
  + <br> 0
  <input type="range" id="b" name="b" value="0" min ="0" max ="3">
  3 <br>
  =
  <output id = "c" name="x" for="a b"></output> <br>
    <input type ="button" value ="Submit" onclick ="formSubmit()">
    </form>
    </div>
    <br>
    Values Submitted shown Below:

    <div id="submittedValue">
    </div>

    <script>
    function formSubmit(){
    var formvalues = []
    var d = new Date();

    formvalues[0] = d.toString();
    formvalues[1] = document.getElementById("a").value
    formvalues[2] = document.getElementById("b").value
    formvalues[3] = document.getElementById("c").value
    var sub = document.getElementById("submittedValue")
    sub.innerHTML = "Value 1: " +formvalues[1]  +"<br>Value 2: "+formvalues[2] +"<br>Total: "+formvalues[3]
    google.script.run.recordValues(formvalues)

    }

    </script>
  </body>
</html>

Google脚本代码:

function doGet() {
  return HtmlService.createTemplateFromFile('ScaleForm')
    .evaluate() 
    .setTitle('Scale Form for stack overflow');

}

function recordValues(formvalues){
 var scale1 =formvalues[0]
 var scale2 = formvalues[1]
 var sum = formvalues[2]
 // The above assignments are for reference sake only they are not used 

 var Ss = SpreadsheetApp.openById("Paste your Spreadsheet ID here to record the values")
 var Sheet = Ss.getSheetByName("Responses")
 Sheet.appendRow(formvalues)

}

如何运行:

  1. 在scripts.google.com中创建一个脚本文件和一个名为&#34; ScaleForm&#34;的HTML文件。

  2. 将HTML文件和脚本的HTML代码复制到脚本文件中。

  3. 使用发布菜单将其部署为网络应用,您应该很高兴。

  4. 有关网络应用程序的更多详细信息,请访问:https://developers.google.com/apps-script/guides/web