Javascript 如何将表单数据传递给GAS

Javascript 如何将表单数据传递给GAS,javascript,html,google-apps-script,google-sheets,Javascript,Html,Google Apps Script,Google Sheets,我试图将表单中的数据传递到Google应用程序脚本中,但当我按下submit时,我看到了一个空白屏幕 表格: 名字 姓 脚本: 函数名称搜索{ 试一试{ var firstName=document.getElementByIdfname.value var lastName=document.getElementByIdlname.value var inputSheet=SpreadsheetApp.openByUrlhttps://docs.google.com/spreadsheets/

我试图将表单中的数据传递到Google应用程序脚本中,但当我按下submit时,我看到了一个空白屏幕

表格:

名字 姓 脚本:

函数名称搜索{ 试一试{ var firstName=document.getElementByIdfname.value var lastName=document.getElementByIdlname.value var inputSheet=SpreadsheetApp.openByUrlhttps://docs.google.com/spreadsheets/d/1z3j7wxMLsXilyKDIH7XnE7VNQqF66fIH4B-mmuWwCJ8/editgid=1235654559; var inputData=inputSheet.getDataRange.getValues; 对于变量i=1;i试试这个:

启动对话框,填充文本框,然后单击提交。该视图将记录并查看下一个对话框

function launchADialog() {
  var html='<form><br /><input type="text" name="Name" /> Name: <br /><input type="text" name="Age" /> Age: <br />';
  html+='<select name="Children" ><option value="0">None</option><option value="1">One</option><option value="2">Two</option></select> Children:<br />';
  html+='<input type="button" value="Submit" onClick="google.script.run.processForm(this.parentNode);" /></form>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, "The Form");
}

function processForm(form) {
  Logger.log(JSON.stringify(form));
  var s=Utilities.formatString('<br />Name: %s <br />Age:%s <br />Number Of Children: %s', form.Name, form.Age, form.Children);
  s+='<br /><input type="button" value="Close" onClick="google.script.host.close();" />';
  var userInterface=HtmlService.createHtmlOutput(s);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, "Form Data")
}

所有与HTML相关的方法getElementById、innerHTML等都应该在客户端脚本中,而应用程序脚本方法应该在服务器端

如果我理解正确,您需要执行以下操作:

提交此表单时,从inputData数组中查找列K和L与输入字段索引10和11匹配的行。 对于此行,从inputData数组的O列和P列索引14和15返回数据。 将返回的数据写入HTML。 如果所有这些都是正确的,那么您可以这样做:

在提交输入中添加一个onclick事件,该事件将触发客户端函数,该函数在HTML中的标记内声明。没有必要为此使用。HTML正文可以是这样的: 名字 姓 从名为clientNameSearch的客户端函数中,检索fname和lname中的值,并在调用名为nameSearch的服务器端函数时将其用作参数: 函数clientNameSearch{ var firstName=document.getElementByIdfname.value; var lastName=document.getElementByIdlname.value; google.script.run.withSuccessHandleronSuccess.nameSearchfirstName,lastName; } 此服务器端函数遍历电子表格中包含内容的所有行,并返回K列和L列与输入数据匹配的第一行的结果: 函数名称SearchFirstName,lastName{ 试一试{ var inputSheet=SpreadsheetApp.openByUrlhttps://docs.google.com/spreadsheets/d/1z3j7wxMLsXilyKDIH7XnE7VNQqF66fIH4B-mmuWwCJ8/editgid=1235654559; var inputData=inputSheet.getDataRange.getValues; 对于变量i=1;i 函数onSuccessresult{ document.getElementById'nameDiv'.innerHTML=+result+; } 完整代码: 名字 姓 函数clientNameSearch{ var firstName=document.getElementByIdfname.value; var lastName=document.getElementByIdlname.value; google.script.run.withSuccessHandleronSuccess.nameSearchfirstName,lastName; } 函数onSuccessresult{ document.getElementById'nameDiv'.innerHTML=+result+; } 而Code.gs将类似于:

函数名称SearchFirstName,lastName{ 试一试{ var inputSheet=SpreadsheetApp.openByUrlhttps://docs.google.com/spreadsheets/d/1z3j7wxMLsXilyKDIH7XnE7VNQqF66fIH4B-mmuWwCJ8/editgid=1235654559; var inputData=inputSheet.getDataRange.getValues; 对于变量i=1;i 参考:
我希望这能有所帮助。

您正在混合服务器和客户端功能。请阅读有关客户机-服务器交互的官方文档,并首先练习其中的示例。所有与HTML相关的方法getElementById、innerHTML等都应使用客户端脚本,并且
服务器端的应用程序脚本方法。我会提供一个固定的脚本,但我不确定你想在这里实现什么。变量结果“”的用途是什么?请考虑提供一份你正在处理的电子表格,以及解释所希望的结果。@ IAMBLIICUS感谢您提供的有用信息,我正试图将信息从谷歌表电子表格显示到我的Web应用程序中。这就是我试图对结果执行的操作。是否有方法将document.getElementByIdfname.value传递给服务器端代码?