【发布时间】:2019-12-03 08:10:32
【问题描述】:
我使用下面提供的代码在单独的 GS 文件中创建了一个数组。我尝试在我的 HTML 文件中调用它。我的目标是将数组的内容与参数email 进行比较。但是google.script.run.withSuccessHandler()返回的值是undefined
//in GS
function mailGetter()
{
//open sheet
var sheet = SpreadsheetApp.openByUrl("https://sheet.url").getSheetByName("Email Sheet").activate();
//get size of given row range
var row_data_email = sheet.getRange("C2:C").getValues();
var emailArray = row_data_email.join().split(',').filter(Boolean);
Logger.log(emailArray);
return emailArray;
}
//in HTML
function checkEmail(email)
{
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
var arraySize = google.script.run.withSuccessHandler(misc).sizeGetter();
console.log(arraySize);
var emailArray = new Array(arraySize);
emailArray = google.script.run.withSuccessHandler(misc).mailGetter();
console.log(emailArray);
if (reg1.test(email) == false)
{
emails.style.border = "1px solid red";
document.getElementById('submitBtn').disabled = true;
}
else if (reg1.test(email) == true)
{
emails.style.border = "1px solid green";
document.getElementById('submitBtn').disabled = false;
}
for (var row = 0; row < arraySize; row++)
{
if (emailArray[row][0] == email)
{
emails.style.border = "1px solid green";
document.getElementById('submitBtn').disabled = false;
break;
}
else if (emailArray[row][0] != email)
{
emails.style.border = "1px solid red";
document.getElementById('submitBtn').disabled = true;
}
}
}
function misc()
{
console.log("Pass");
}
【问题讨论】:
-
函数
misc在哪里? -
我忘了包含它,因为它只是在控制台日志中写入“通过”。很抱歉
-
函数
misc将收到arraySize和emailArray。客户端调用服务器函数sizeGetter()> 服务器占用自己的时间> 客户端不等待服务器返回并在此期间执行它所做的任何事情> 一段时间后,服务器返回arraySize给客户端> 客户端接收它在传递给successHandler的函数中(即misc函数)。 TLDr:客户端要求服务器做某事,并在服务器完成客户端要求它做的工作后用这个数字(成功处理函数)回调它。 -
我刚刚使用 console.log() 进行了检查,这些值实际上存储在其中。我有办法获取
function checkEmail()而不是function misc()中的值吗?
标签: google-apps-script google-sheets web-applications