我正在构建一个Web脚本,该脚本收集在字段中输入的信息,最后,它允许用户选择代码类型并点击“立即生成”:
在“您的代码”字段中显示密钥
我遇到的问题是,一旦用户单击“立即生成”按钮,就会显示密钥代码。
我还想通过随机化它从列表中选择键的方式来缩放它,而不是选择列表中的下一个有效键。这是为了避免人们同时生成密钥并获得相同的密钥。
这是我第一次编码,因此我的知识非常有限,但是...我试图为“立即生成”按钮提供2个功能。
第一个功能从输入字段中收集信息,并将其记录到“数据表”中。同时,它从“密钥”列表中选择有效的代码,将其标记为已兑换,然后将代码复制到数据收集表中。
当您按下“立即生成”按钮时,我试图使第二个功能同时运行。我想使用输入字段的所有ID,并将其用作搜索功能以从“数据表”中提取键,但是我无法使用它。
function userClicked(userInfo){
var ss = SpreadsheetApp.openByUrl(url)
var ws = ss.getSheetByName("Data");
var keysSheet = ss.getSheetByName("Keys");
var codeTypeColumn = getFirstMatchingCoord(keysSheet, userInfo.codeType, 1, null)[1];
var firstValidCodeRow = getFirstMatchingCoord(keysSheet, "Valid", null, codeTypeColumn + 2)[0];
keysSheet.getRange(firstValidCodeRow, codeTypeColumn + 2).setValue("redeemed");
var key = keysSheet.getRange(firstValidCodeRow, codeTypeColumn).getValue();
ws.appendRow([userInfo.memberFirst, userInfo.memberLast, userInfo.memberEmail, userInfo.orderNum, userInfo.agentFirst, userInfo.agentLast, userInfo.codeType, key, new Date()]);
}
function getFirstMatchingCoord(sheet, value, row, col) {
if (row === null) {
var range = sheet.getRange(1, col, sheet.getMaxRows(), 1);
} else {
var range = sheet.getRange(row, 1, 1, sheet.getMaxColumns());
}
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
var value_row = values[i];
for (var j = 0; j < value_row.length; j++) {
if (values[i][j] == value) {
if (row === null) {
return [i + 1, col];
} else {
return [row, j + 1];
}
}
}
}