我正在创建一个表单,其中添加了几个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());
}
答案 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)
}
如何运行:
在scripts.google.com中创建一个脚本文件和一个名为&#34; ScaleForm&#34;的HTML文件。
将HTML文件和脚本的HTML代码复制到脚本文件中。
使用发布菜单将其部署为网络应用,您应该很高兴。
有关网络应用程序的更多详细信息,请访问:https://developers.google.com/apps-script/guides/web