Google apps script 只允许将电子表格中的文本提交到google web应用程序的文本字段中

Google apps script 只允许将电子表格中的文本提交到google web应用程序的文本字段中,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在寻找一种方法,只允许将电子表格中的名称输入谷歌脚本web应用程序。我已经在应用程序上有了一个名为“自动完成”的功能,它允许用户键入一个名称,并在输入下方显示下拉列表,以建议文本字段的可能值。这些名称与我只想输入的名称相同,因此与表单一起提交。现在我已经可以从电子表格中提取名称了,就像我使用自动完成功能那样 比如说 如果我的电子表格中有Jack和Jill,我如何防止有人将john输入表单?以下是提交的内容: JS: HTML: 这只允许您提交Sheet1第1列中的单词 html: 我认为你应

我正在寻找一种方法,只允许将电子表格中的名称输入谷歌脚本web应用程序。我已经在应用程序上有了一个名为“自动完成”的功能,它允许用户键入一个名称,并在输入下方显示下拉列表,以建议文本字段的可能值。这些名称与我只想输入的名称相同,因此与表单一起提交。现在我已经可以从电子表格中提取名称了,就像我使用自动完成功能那样

比如说
如果我的电子表格中有Jack和Jill,我如何防止有人将john输入表单?

以下是提交的内容:

JS:

HTML:


这只允许您提交Sheet1第1列中的单词

html:


我认为你应该从阅读@pguardiario开始,因为我有80个学生,所以这对于下拉列表来说太多了,这就是为什么我真的喜欢自动完成功能。这就是自动完成功能
var validOptions = ['John', 'Mary']
var formCallback = function(){
  if(validOptions.indexOf($('input#myInput').val()) === -1){
    alert('Wrong!')
    return false
  }
  return true
}
<form onsubmit="formCallback()">
  <input id="myInput">
</form>
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  </head>
  <body>
    
    <form>
      <input type="text" id="txt"name="text" oninput="checkWord();" />
      <br /><input type="button" id="sub" value="Submit" onClick="saveText(this.parentNode);" disabled />
    </form>
    <script>
      var wA;
      $(function(){
        google.script.run
        .withSuccessHandler(function(obj){
          wA=obj;
        })
        .getWords();
      });
       function checkWord() {
         $('#sub').attr("disabled",true);
         var word=$('#txt').val();
         //console.log(wA);
         if(wA.indexOf(word)!=-1) {
           $('#sub').attr('disabled',false);
         }
       }
       function saveText(obj) {
         google.script.run.saveWord(obj);
       }
    </script>
  </body>
</html>
function getWords() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1');//Sheet1
  const rg=sh.getRange(1,1,sh.getLastRow(),1);//column1
  const vs=rg.getValues().map(function(r){return r[0];});
  return vs;
}

function saveWord(obj) {
  SpreadsheetApp.getActive().toast(obj.text);
}
//Using a dialog instead of a webapp
function showMyDialog() {
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutputFromFile('ah1'), 'Submit Dialog');
}