首页 > 解决方案 > 将数据从下拉 => 传递到 javascript 函数(Google App 脚本)

问题描述

希望我已经包含了足够多的代码,而不必全部发布...

我有一个调用 displayDropdown()- 的主函数,它调用一个 HTMLService 并显示一个带有下拉列表和文本框的模式:
模态截图
这是存储数据的(压缩的)javascript代码:

<html>
<input type="submit" value="Submit" class="action" onclick="sendData()" />       
</html>
<script>
function sendData() {
          var values = {};
          values.textJob = document.getElementById("input").value;
          values.selectedJob = document.getElementById("dropJob").value;
          google.script.run.withSuccessHandler(closeIt).grabData(values);
       };
        function closeIt(){
          google.script.host.close()
        };
</script>

然后是我的 .gs 文件中的 grabData() 函数:

function grabData(values) {
  if(values.textJob=="")
   //return values.selectedJob;
    Logger.log(values.selectedJob);
  else 
    //return values.textJob;
    Logger.log(values.textJob);
}

如果我将退货注释掉并尝试记录数据,我会记录预期的数据。但是,如果我将其反转并返回,则在调用 displayDropdown() 后返回主函数,并将变量设置为等于 grabData 函数:

displayDropdown();
var stuff = grabData();
Logger.log(stuff);

我收到一条错误消息:

错误信息

为什么我无法访问数据?

标签: javascriptgoogle-apps-script

解决方案


这是我通常将数据从 HTML 表单发送到 GS 的方法:

HTML

<form method="POST" action="#" id="formID">
  <button class="btn" type="submit">Send</button>
</form> 

JS

document.querySelector("#formID").addEventListener("submit", function(e) {
  var test = google.script.run.withSuccessHandler('client side function').processForm(this);
}); 

我通常将“this”作为参数传递,并在 GS 上处理信息。

编辑:

GS

function processForm(values){

  Logger.log(values);
  Logger.log(typeof values);

}

截图

1- 网络应用

在此处输入图像描述

2- 服务器日志(函数 processForm)

在此处输入图像描述


推荐阅读