在JS中如何传递数组参数到GAS,然后检索结果



在我的Google Sheet中,我有一个包含详细信息的图书列表。用户插入他正在寻找的标题,jQuery将标题传递给GAS中的函数,然后它将匹配(找到的书籍)返回给JS。

我的代码。

<form id="formD">
<input type="text" id="title" name="title" placeholder="Math">
<button id="submit">Search</button>
</form>

JS

$("#submit").click(function()
{
var data = [];
data.push($("#title").val()); //title the user is looking for
google.script.run.withSuccessHandler(onSuccess).find(data);
});
function onSuccess(a)
{
alert(a); //example
}

<气体/strong>

function doGet() {
return HtmlService.createTemplateFromFile('index')
.evaluate()
.addMetaTag('viewport', 'width=device-width, initial-scale=1');
}
function find(data) {
var sheet = SpreadsheetApp.openById("XXX").getSheetByName("XXX");
var range = sheet.getRange("A:G");
var values = range.getValues();
var result = [];
var title = data[0];
for(i=0; i < values.length; i++){
if(values[i][0] != "")
{  
if(values[i][2].includes(title))
result.push(values[i]);
}
}
return result
}

我不知道如何解析和使用我传给GAS的数组。当按钮"搜索"时;,则重新加载页面,并将值附加到URL。

试试这个

function find(data) {
var sheet = SpreadsheetApp.openById("XXX").getSheetByName("XXX");
var range = sheet.getRange("A1:G" + sheet.getLastRow());
var values = range.getValues();
var result = [];
var title = data;
for (let i = 0; i < values.length; i++) {
if (values[i][0] != "") {
if (values[i][2].includes(title))
result.push(values[i]);
}
}
return result;
}
function onSuccess(a) {
alert(a.join('n')); //example
}

js:

不需要数据为数组

$("#submit").click(function() {
var data = $("#title").val(); 
google.script.run.withSuccessHandler(onSuccess).find(data);
});

客户端到服务器的通信

解决点击按钮时页面重新加载的问题。

$("#sumbit").click(function(){
}

这段代码在$(document).ready(function(){})之外。

相关内容