在 HTML 服务中验证电子表格
Validate Spreadsheet in a HTML Service
我在 Google 表格中使用 HTML 服务创建了一个 html 表格。表单中包含三个字段。我想检查他们在其中一个字段中输入的数据是否包含在 sheet2 的一列中。如果不是,我只想显示一个警告框,上面写着 "invalid input"。最好的方法是什么?这是我的提交表格。将值与 "test" 进行比较的代码行是我要检查电子表格中的值的地方。
function formSubmit() {
if (document.getElementById("sku").value === "test") {
alert(document.getElementById("sku").value);
} else {
google.script.run.appendRowstoSheet(document.forms[0]);
document.getElementById("sku").value = ' ';
document.getElementById("sku").focus();
}
}
gs代码:
//insertValuestoSheet
function appendRowstoSheet(form){
var sku = form.sku,
loc_array = [{}];
location = form.location,
reference = form.reference
loc_array = location.split("-");
sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//validateMySheet();
//don't insert blank sku's
//Also want to have it so it doesn't insert values where if the sku
//doesn't match a sku in sheet2, column A. Alert the user if this condition
if (sku != " ") {
sheet.appendRow(["'"+reference," "," "," ","'"+sku, "1", " ", " ", " ", "'"+loc_array[0],"'"+loc_array[1],"'" + loc_array[2],"'"+loc_array[3]]);
}
}
我用更好的函数名修改了我的代码并添加了该函数。当前在 appendRowstoSheet 中,它插入到电子表格中。如果不满足我的条件,我如何 return 在这里失败。我理解正确吗?
你需要return一些东西:
if (sku != " ") {
sheet.appendRow(["'"+reference," "," "," ","'"+sku, "1", " ", " ", " ", "'"+loc_array[0],"'"+loc_array[1],"'" + loc_array[2],"'"+loc_array[3]]);
return true;
} else {
return false;
};
注意 return true;
和 return false;
的用法。 true 或 false 将 returned 到您的 HTML 代码并传递给成功处理程序。
您需要 运行 一个 withSuccessHandler()
并在单独的 "success" 函数中进行最终处理。首先从电子表格中获取数据。然后,如果成功,另一个函数将 运行 比较值。
<script>
function onSuccess(argReturnValue) {
Console.log('argReturnValue: ' + argReturnValue);
if (argReturnValue === true) {
//Code here
} else {
};
//Note that the argument: argValuesFromSpreadsheet is the return value from
//the gs script function, "getValuesFromForm"
var valueFromForm = document.getElementById("sku").value;
//You'll need to modify this line to get a specific value
var valueFromSpreadsheet = argValuesFromSpreadsheet[0];
Logger.log('valueFromSpreadsheet: ' + valueFromSpreadsheet);
if (valueFromForm === valueFromSpreadsheet) {
alert('alert text here: ' + document.getElementById("sku").value);
} else {
document.getElementById("sku").value = ' ';
document.getElementById("sku").focus();
}
}
function formSubmit() {
google.script.run
.withSuccessHandler(onSuccess)
.getValuesFromForm(document.forms[0]);
};
</script>
注意:您将需要对代码进行一些修改,具体取决于哪些数据以及从电子表格return编辑的数据格式:
var valueFromSpreadsheet = argValuesFromSpreadsheet[0];
该行需要修改。
我在 Google 表格中使用 HTML 服务创建了一个 html 表格。表单中包含三个字段。我想检查他们在其中一个字段中输入的数据是否包含在 sheet2 的一列中。如果不是,我只想显示一个警告框,上面写着 "invalid input"。最好的方法是什么?这是我的提交表格。将值与 "test" 进行比较的代码行是我要检查电子表格中的值的地方。
function formSubmit() {
if (document.getElementById("sku").value === "test") {
alert(document.getElementById("sku").value);
} else {
google.script.run.appendRowstoSheet(document.forms[0]);
document.getElementById("sku").value = ' ';
document.getElementById("sku").focus();
}
}
gs代码:
//insertValuestoSheet
function appendRowstoSheet(form){
var sku = form.sku,
loc_array = [{}];
location = form.location,
reference = form.reference
loc_array = location.split("-");
sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//validateMySheet();
//don't insert blank sku's
//Also want to have it so it doesn't insert values where if the sku
//doesn't match a sku in sheet2, column A. Alert the user if this condition
if (sku != " ") {
sheet.appendRow(["'"+reference," "," "," ","'"+sku, "1", " ", " ", " ", "'"+loc_array[0],"'"+loc_array[1],"'" + loc_array[2],"'"+loc_array[3]]);
}
}
我用更好的函数名修改了我的代码并添加了该函数。当前在 appendRowstoSheet 中,它插入到电子表格中。如果不满足我的条件,我如何 return 在这里失败。我理解正确吗?
你需要return一些东西:
if (sku != " ") {
sheet.appendRow(["'"+reference," "," "," ","'"+sku, "1", " ", " ", " ", "'"+loc_array[0],"'"+loc_array[1],"'" + loc_array[2],"'"+loc_array[3]]);
return true;
} else {
return false;
};
注意 return true;
和 return false;
的用法。 true 或 false 将 returned 到您的 HTML 代码并传递给成功处理程序。
您需要 运行 一个 withSuccessHandler()
并在单独的 "success" 函数中进行最终处理。首先从电子表格中获取数据。然后,如果成功,另一个函数将 运行 比较值。
<script>
function onSuccess(argReturnValue) {
Console.log('argReturnValue: ' + argReturnValue);
if (argReturnValue === true) {
//Code here
} else {
};
//Note that the argument: argValuesFromSpreadsheet is the return value from
//the gs script function, "getValuesFromForm"
var valueFromForm = document.getElementById("sku").value;
//You'll need to modify this line to get a specific value
var valueFromSpreadsheet = argValuesFromSpreadsheet[0];
Logger.log('valueFromSpreadsheet: ' + valueFromSpreadsheet);
if (valueFromForm === valueFromSpreadsheet) {
alert('alert text here: ' + document.getElementById("sku").value);
} else {
document.getElementById("sku").value = ' ';
document.getElementById("sku").focus();
}
}
function formSubmit() {
google.script.run
.withSuccessHandler(onSuccess)
.getValuesFromForm(document.forms[0]);
};
</script>
注意:您将需要对代码进行一些修改,具体取决于哪些数据以及从电子表格return编辑的数据格式:
var valueFromSpreadsheet = argValuesFromSpreadsheet[0];
该行需要修改。