如何将HTML复选框的值传递给Google Apps脚本?

时间:2015-01-27 16:14:20

标签: javascript html checkbox google-apps-script google-sheets

问题:

如何将使用Google的HTML服务创建的复选框的值(或状态)从HTML(在这种情况下为侧边栏GUI)传递到Code.gs以执行检查?

我设法将所有其他数据从这里传递到Code.gs.例如,文本框,日期,文本区域。但是,由于复选框没有“值”,我不知道如何传递状态。

我的代码:

(不是整个剧本,因为它太大了)

在HTHML中:

<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很陌生,如果这是一个简单的答案,请道歉)

2 个答案:

答案 0 :(得分:0)

您可以向元素添加事件侦听器并传递值等。在您想要调用函数服务器端的情况下尝试此操作。

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>

答案 1 :(得分:0)

我认为你需要做的就是手动设置复选框:

// use template, or overloads for different floatingpoints
template<class T>
T add_s(T l, T r) {
    T result = l + r;
    T greater = std::max(l, r);
    if(result == greater)
        return std::nextafter(greater, std::numeric_limits<T>::max());
    return result;
}

// ...
for (double f = /*...*/; f < /*...*/; f = add_s(f, 1.0))