您好我是谷歌应用程序脚本的新手,我想比较一下,我在文本框中放入的值与excel表中的值。我的Excel工作表的值是正确的显示和正确创建的文本框(两个因为Excel工作表中有两个条目)。我想验证这一点:如果我放在我的文本框中的内容大于excel表的值,那么错误就可以了。我想使用提交按钮。我看到了一个带有验证电子邮件功能的示例,但我无法将其转换为我的示例 当我debub函数validateStock(e)我得到参数“undefined。 请帮帮我。
function doGet() {
var user = Session.getUser().getUserLoginId();
var excel = SpreadsheetApp.openById("0Alg06LrHGRkddDJyMUh5bGRsZnhKQkpqYjBCN0d0X2c");
var raw = excel.getSheets()[0];
var app = UiApp.createApplication();
var stockLabel = app.createLabel('Introduza a Quantidade de Stock pretendida');
var inputBox = app.createTextBox().setId('stockBox').setName('myStock');
var submitButton = app.createButton('Validate');
var infoLabel = app.createLabel('Stock é Valido').setVisible(false).setId('info');
var panel = app.createVerticalPanel();
var list = raw.getRange("A1:A2").getValues();
for( var i = 0; i < list.length; i++)
{
//if (list[i] == user)
var cliente = raw.getSheetValues(i+1,2,1,1);
app.add(app.createLabel("Stock: "+ list[i]));
app.add(app.createTextBox());
//raw.getSheetValues(startRow, startColumn, numRows, numColumns)
}
panel.add(stockLabel)
.add(inputBox)
.add(infoLabel)
.add(submitButton);
//Add the panel to the application
//Create Click handlet and add to the submit button
var handler = app.createServerClickHandler('validateStock');
handler.addCallbackElement(panel);
submitButton.addClickHandler(handler);
panel.add(stockLabel).add(inputBox).add(submitButton);
app.add(panel);
return app;
}
//Function to validate stock and display the response
function validateStock(e){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
var excel = SpreadsheetApp.openById("0Alg06LrHGRkddDJyMUh5bGRsZnhKQkpqYjBCN0d0X2c");
var raw = excel.getSheets()[0];
var app = UiApp.getActiveApplication();
var list = raw.getRange("A1:A2").getValues();
stock = e.parameter.myStock;
Logger.log(stock);
if(emailPattern.test(stock) == false)
app.getElementById('info').setText("Invalid Email Address").setStyleAttribute("color", "#F00").setVisible(true);
else
app.getElementById('info').setText("Valid Email Address").setStyleAttribute('color', '#339900').setVisible(true);
return app;
}
else
app.getElementById('info').setText("Valid Email Address").setStyleAttribute('color', '#339900').setVisible(true);
return app;
}
答案 0 :(得分:0)
使用记录器进行调试。您无法使用调试器调试validateStock,因为它是回调。 (上次我检查过,调试器无法使用回调函数)
要使用调试器,您可以添加一个如下函数:
function debugValidateStock(e){
var e.parameter.myStock = "test";
validateStock(e);
}
答案 1 :(得分:0)
1 - 你必须初始化变量STOCK:
stock = e.parameter.myStock;
- &gt; var stock = e.parameter.myStock
2 - 要在不考虑参数e.parameter.myStock和回调函数的情况下运行程序,你必须在函数的开头定义var myStock validateStock
var stock = "*WHAT_YOU_EXPECT*" ;
代替stock = e.parameter.myStock;