I want to search data from google sheet and show it in form by web app.
PAN 是唯一的 5 位數字。當我們輸入 PAN ,5 位數字到(PAN)輸入表單并單擊更新按鈕時,它應該在作業表中搜索 PAN 的資料,如果匹配則將整行帶到 Web 表單,否則顯示不可用。
當我們輸入 PAN 號并單擊更新按鈕時,它會在表格中顯示錯誤的資料。但是當我們通過 Logger.log() 檢查它時,它會顯示正確的資料。
我不知道為什么當我們單擊更新按鈕時它會在網路表單中顯示錯誤的資料,請幫助我,讓我知道這個問題的原因是什么
function doGet(e)
{
return HtmlService.createHtmlOutputFromFile("page");
}
function searchData(pan)
{
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
//var nameList=ss.getRange("A1:A").getValues().flat();
//var panList=ss.getRange("B1:B").getValues().flat();
//var aadharList=ss.getRange("c1:c").getValues().flat();
//var emailList=ss.getRange("d1:d").getValues().flat();
//var phnList=ss.getRange("e1:e").getValues().flat();
var data=ss.getRange(1,1,ss.getLastRow(),5).getValues();
var panList=data.map(function(r){return r[1];});
var nameList=data.map(function(r){return r[0];});
var aadharList=data.map(function(r){return r[2];});`enter code here`
var emailList=data.map(function(r){return r[3];});
var phnList=data.map(function(r){return r[4];});
var index=panList.indexOf((pan));
if(index>-1)
{
var name=nameList[index];
var aadhar=aadharList[index];
var email=emailList[index];
var phone=phnList[index];
return [name,pan,aadhar,email,phone]
}
else
{ return "unavailable"}
}
Logger.log(searchData(66666))
//html file..(page.html)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h1> Web App </h1>
<label> Name </label>
<input type="text" id="username">
<label> PAN</label>
<input type="number" id="userpan">
<label> Aadhar </label>
<input type="number" id="useraadhar">
<label> Email </label>
<input type="text" id="useremail">
<label> Telepnoe </label>
<input type="text" id="userphone">
<button id="btn"> Update </button>
<script>
//document.getElementById("userpan").addEventListener("input",search);
document.getElementById("btn").addEventListener("click",search);
function search()
{
var pan=document.getElementById("userpan").value;
if(pan.length==5)
{
google.script.run.withSuccessHandler(test).searchData(pan);
function test(s)
{
document.getElementById("username").value=s[0];
document.getElementById("userpan").value=pan;
document.getElementById("useraadhar").value=s[2];
document.getElementById("useremail").value=s[3];
document.getElementById("userphone").value=s[4];
}
}
}
</script>
</body>
</html>
uj5u.com熱心網友回復:
從But when we check it by Logger.log() , it show right data .和您的顯示腳本,我認為您的問題的原因可能是由于值panList是數字var pan=document.getElementById("userpan").value而是字串。在這種情況下,即使輸入標簽的輸入值為 number 66666, 的值var pan=document.getElementById("userpan").value也是字串。以此,var index=panList.indexOf((pan));永遠是-1。
如果您的腳本只是簡單修改,請按如下方式修改。
從:
var data=ss.getRange(1,1,ss.getLastRow(),5).getValues();
到:
var data = ss.getRange(1, 1, ss.getLastRow(), 5).getDisplayValues();
- 這樣,當
panof66666(字串)從 Javascript 發送到 Google Apps Script 時,data檢索到的getDisplayValues()就是字串。這樣,var index=panList.indexOf((pan));就可以作業了。
筆記:
我認為您的 Google Apps 腳本可能能夠降低流程成本,如下所示。
function searchData(pan) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var range = sheet.getRange("B1:B" sheet.getLastRow()).createTextFinder(pan).matchEntireCell(true).findNext(); if (range) { return sheet.getRange(range.getRow(), 1, 1, 5).getValues()[0]; } return "unavailable"; }
筆記:
當您修改 Google Apps 腳本時,請將部署修改為新版本。這樣,修改后的腳本就會反映在 Web Apps 中。請注意這一點。
您可以在“在不更改新 IDE 的 Web 應用程式 URL 的情況下重新部署 Web 應用程式”的報告中查看詳細資訊。
參考:
- 獲取顯示值()
- 創建文本查找器(查找文本)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477118.html
