.gs(更新)
function doGet() {
return HtmlService.createTemplateFromFile('Form.html').evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
var scriptProp = PropertiesService.getScriptProperties();
function doPost (e) {
var lock = LockService.getScriptLock();
lock.tryLock(10 * 1000);
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sh = doc.getSheetByName("Sheet1");
var values = sh.getRange(2, 12, sh.getLastRow()-1, 1).getValues();
// Logger.log(values);
try {
var sheet = doc.getSheetByName("OTP");
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow() + 1;
var newRow = headers.map(function(header) {
return header === 'Timestamp' ? new Date() : e.parameter[header]
});
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);
var value = newRow[1];
for (var i = 0; i < values.length; i++) {
if (values[i] == value) {
return HtmlService.createTemplateFromFile('Confirmation.html').evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
} else {
return HtmlService.createTemplateFromFile('Error.html').evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}}}
catch (e) {
return ContentService.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}}
上述代码的目的是检查值是否newRow[1]与Sheet1中范围(L2:L)中的任何单元格值匹配,然后重定向到Confirmation.html,否则根据代码中的if语句重定向到Error.html
现在的问题是;仅当newRow[1]== 范围内的第一个/顶部值 (L2:L) 时,用户被重定向到 Confirmation,并且该范围内低于该值的任何其他值将用户重定向到错误
例如:如果我们在 L2:L 范围内有 4 个值,如下所示: L2: John L3: Mike L4: Jenny L5: Tom
如果用户将 John 提交为newRow[1],则重定向到 Confirmation 并且这是正确的,没有问题,但是
如果用户提交 Mike 或 Jenny 或 tom,重定向到错误并且这个错误,因为新提交的值仍在范围内,并且应该也将用户重定向到 Confirmation
任何帮助表示赞赏。提前致谢
富国沪深
米脂
相关分类