如何将 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