如何将 HTML 复选框的值传递给 Google Apps 脚本?
How do I pass the value of a HTML checkbox to Google Apps Script?
问题:
如何将使用 Google 的 HTML 服务创建的复选框的值(或状态)从 HTML(在本例中为侧边栏 GUI)传递到 Code.gs 执行检查?
我已经设法将所有其他数据从这里传递到 Code.gs。例如,文本框、日期、文本区。但是,由于复选框没有 "value" 本身,我不知道如何通过状态。
我的代码:
(不是整个脚本,因为它太大了)
在 HHTML 中:
<input id="complete" name="complete" type="checkbox" />
<script type="text/javascript">
function formSubmit() {
google.script.run.transferUpdates(document.forms[0]);
}
</script>
在Code.gs中:
(同样不是整个代码文件)
function transferUpdates(form1){
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getSheetByName('Action Plan'),
sheet2 = ss.getSheetByName('Problem Details'),
actionnum = form1.actionup,
desc = form1.description,
check = form1.complete;
问题:
我的问题是 "check" 变量从来没有可比较的值,因为没有从 HTML 表单传递任何内容?
有人对此有解决方案吗?
(我是 HTML 的新手,如果这是一个简单的答案,我深表歉意)
您可以向元素添加事件侦听器并传递值等。如果您想要调用服务器端函数,请尝试此操作。
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.IFRAME)
}
function getStuff(foo){
Logger.log(foo)
}
index.html
<code>
<div>
<div id="mylabel"></div>
<input id="test" value="testing" type="checkbox">
<script>
document.getElementById('test').addEventListener("change", changeit);
function success(){document.getElementById('mylabel').innerHTML = 'success!'}
function changeit(){
var v = document.getElementById('test').value;
document.getElementById('mylabel').innerHTML = v;
google.script.run.withSuccessHandler(success).getStuff("going IN")
}
</script>
</div>
我想你需要做的就是手动设置复选框:
check = (form1.complete) ? true : false; // false or true depending on checkbox
问题:
如何将使用 Google 的 HTML 服务创建的复选框的值(或状态)从 HTML(在本例中为侧边栏 GUI)传递到 Code.gs 执行检查?
我已经设法将所有其他数据从这里传递到 Code.gs。例如,文本框、日期、文本区。但是,由于复选框没有 "value" 本身,我不知道如何通过状态。
我的代码:
(不是整个脚本,因为它太大了)
在 HHTML 中:
<input id="complete" name="complete" type="checkbox" />
<script type="text/javascript">
function formSubmit() {
google.script.run.transferUpdates(document.forms[0]);
}
</script>
在Code.gs中:
(同样不是整个代码文件)
function transferUpdates(form1){
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getSheetByName('Action Plan'),
sheet2 = ss.getSheetByName('Problem Details'),
actionnum = form1.actionup,
desc = form1.description,
check = form1.complete;
问题:
我的问题是 "check" 变量从来没有可比较的值,因为没有从 HTML 表单传递任何内容?
有人对此有解决方案吗?
(我是 HTML 的新手,如果这是一个简单的答案,我深表歉意)
您可以向元素添加事件侦听器并传递值等。如果您想要调用服务器端函数,请尝试此操作。
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.IFRAME)
}
function getStuff(foo){
Logger.log(foo)
}
index.html
<code>
<div>
<div id="mylabel"></div>
<input id="test" value="testing" type="checkbox">
<script>
document.getElementById('test').addEventListener("change", changeit);
function success(){document.getElementById('mylabel').innerHTML = 'success!'}
function changeit(){
var v = document.getElementById('test').value;
document.getElementById('mylabel').innerHTML = v;
google.script.run.withSuccessHandler(success).getStuff("going IN")
}
</script>
</div>
我想你需要做的就是手动设置复选框:
check = (form1.complete) ? true : false; // false or true depending on checkbox