Я бы хотел выполнить поиск по textFinder и вернуть его в массив для таблицы html. У меня несколько таблиц, и я собираюсь извлечь данные из одного текстового ввода с помощью textFinder, а затем отправить их на страницу HTML (используя google HTML templates ).
У меня есть пробовал с приведенными ниже кодами, но не смог найти решение, пожалуйста помогите.
Code.gs
function doGet(){
var html = HtmlService.createTemplateFromFile("index");
var output = html.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
return output;
}
function getFilter(search){
var ssID = "Sheet ID",
sheet = SpreadsheetApp.openById(ssID).getSheets()[2];
var Avals = sheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
var ranges = [];
if ("name" in search && search.name != "") {
ranges = sheet.getRange(2, 4, Alast - 1, 3).createTextFinder(search.name).findAll();
}
if ("ac" in search && search.ac != "") {
var acRanges = sheet.getRange(2, 3, Alast - 1, 1).createTextFinder(search.ac).findAll();
if (ranges.length > 0) {
ranges = ranges.filter(function(r1) {return acRanges.some(function(r2) {return r1.getRow() == r2.getRow()})});
} else {
ranges = acRanges;
}
for (i = 0; i < ranges.length; i++) {
var row = ranges[i].getRow();
var lastCol = sheet.getLastColumn();
var values = sheet.getRange(row, 1, 1, lastCol).getDisplayValues(); //get all values for the row
return values;
}
}
}
HTML
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script type="text/javascript">
function setPageValues () {
var search = document.getElementsByName('searchtext')[0].value;
var ac = document.getElementsByName('ac')[0].value;
var obj = {};
if (!search && !ac) alert("No search values.");
if (search) {
obj.name = search;
}
if (ac) {
obj.ac= ac;
}
google.script.run.withSuccessHandler(disp).getFilter(obj);
}
</script>
</head>
<body>
<input type="text" name="ac">
<input type="text" name="searchtext">
<input type="button" value="Search" onclick="setPageValues();">
<br /><br />
<div name="resultbox">
<? var values = getFilter(); ?>
<table>
<? for (var i = 0; i < values.length; i++) { ?>
<tr>
<? for (var j = 0; j < values.length; j++) { ?>
<td><?= values[i][j] ?></td>
<? } ?>
</tr>
<? } ?>
</table>
</div>
</body>
<script>
</script>
</html>