Search 从Google电子表格中搜索Google脚本WebApp html

Search 从Google电子表格中搜索Google脚本WebApp html,search,google-apps-script,google-sheets,Search,Google Apps Script,Google Sheets,我有一个带有表单的web应用程序,可以将数据发送到Google电子表格。 现在,我想创建另一个带有搜索功能的html页面,从Google工作表中提取数据并将其显示在我的html页面上。 有办法吗?请帮忙。 我到处都找过,但没有代码有用。 提前感谢。您是希望在外部(即在Google环境之外的您自己的网站/服务器上)构建和托管此页面,还是希望在G套件中构建一个编码、管理和托管的网页 如果是前者,则需要使用从电子表格中提取数据 如果是后者,请阅读和for Apps脚本,该脚本允许您在G套件中构建和托管

我有一个带有表单的web应用程序,可以将数据发送到Google电子表格。 现在,我想创建另一个带有搜索功能的html页面,从Google工作表中提取数据并将其显示在我的html页面上。 有办法吗?请帮忙。 我到处都找过,但没有代码有用。
提前感谢。

您是希望在外部(即在Google环境之外的您自己的网站/服务器上)构建和托管此页面,还是希望在G套件中构建一个编码、管理和托管的网页

如果是前者,则需要使用从电子表格中提取数据

如果是后者,请阅读和for Apps脚本,该脚本允许您在G套件中构建和托管基本web应用程序


如果您需要更多示例,请尝试在您喜爱的搜索引擎中使用搜索词“host web app google apps script”。

搜索对话框和web app

代码G.gs:

function findNeedleInHaystack(sObj) {
  var sObj=sObj||{};
  sObj.column=sObj.column||1;
  sObj.needle=sObj.needle||22;
  sObj.haystack=sObj.haystack||'Sheet1';
  sObj.startrow=sObj.startrow||2;
  sObj.id=sObj.id||'Spreadsheet ID';
  sObj.found="No results found";
  var ss=SpreadsheetApp.openById(sObj.id);
  var sh=ss.getSheetByName(sObj.haystack);
  var rg=sh.getRange(sObj.startrow,1,sh.getLastRow()-sObj.startrow+1,sh.getLastColumn());
  var v=rg.getValues();
  for(var i=0;i<v.length;i++) {
    if(v[i][sObj.column-1]==sObj.needle) {
     sObj.found=v[i];
     break; 
    }
  }
  return sObj;
}

function needleInHaystackDialog() {
  var userInterface=HtmlService.createHtmlOutputFromFile("aq6").setWidth(800);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, "Needle In Haystack")
}

function doGet() {
  return HtmlService.createHtmlOutputFromFile("aq6").setWidth(600);
}
函数findNeedleInHaystack(sObj){
var sObj=sObj |{};
sObj.column=sObj.column | 1;
sObj.针=sObj.针| 22;
sObj.haystack=sObj.haystack | | |“Sheet1”;
sObj.startrow=sObj.startrow | | 2;
sObj.id=sObj.id | |“电子表格id”;
sObj.found=“未找到结果”;
var ss=电子表格应用程序openById(sObj.id);
var sh=ss.getSheetByName(sObj.haystack);
var rg=sh.getRange(sObj.startrow,1,sh.getLastRow()-sObj.startrow+1,sh.getLastColumn());
var v=rg.getValues();

对于(var i=0;iSee-有一个来自@Mike McKayWelcome的关于堆栈溢出的完美答案。请阅读此回复,感谢您的回复。它工作正常,返回搜索字符串。我正在检索结果文本区域的值,但无法将其分解,例如,字符串包含名字、姓氏、电子邮件等,我如何拆分它信息,以便能够将它们移动到我的html中的单独div?我尝试了许多方法,但都没有成功。非常感谢!结果是什么类型的对象?抱歉,响应太晚。我的数据有名字、姓氏、电子邮件、电话、注册号和序列号。我修改了脚本,让按钮获取搜索文本,将其粘贴到she中的搜索单元格中如果我使用的是et,那么在“text area id=“found”中只会得到一个结果,如下所示:John,Doe,email@email.com,966540000000,34-FG-674347,AS2020-245133。如何将它们分开?我想将每个值拉到html中的一个单独的div中。提前感谢。sObj.found是数组。因此First Name=sObj.found[0];Last Name=sObj.found[1];等等。您可以使用Logger.log或console.log确定对象结构。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.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>
<br /><input id="txt1" type="text" placeholder="Sheet Name" />
<br /><input id="txt2" type="text" placeholder="Search String" />
<br /><input id="txt3" type="text" placeholder="Search Column Number" />
<br /><input id="txt4" type="text" placeholder="Start Row" />
<br /><input id="txt5" type="text" placeholder="Spreadsheet ID" />
<br /><textarea id="found" rows="2" cols="50"></textarea>,
<br /><input type="button" value="Search" onClick="search();" />
<script>
  function search() {
    var s1=$('#txt1').val();
    var s2=$('#txt2').val();
    var s3=$('#txt3').val();
    var s4=$('#txt4').val();
    var s5=$('#txt5').val();
    google.script.run
    .withSuccessHandler(function(sObj){
      $('#found').val(sObj.found);
    })
    .findNeedleInHaystack({haystack:s1,needle:s2,column:s3,startrow:s4,id:s5});

  }
</script>
</body>
</html>