我想检查第 6 列中新插入的值是否与另一个 google 工作表中的记录匹配,如果不匹配,我想拒绝用户输入。我的下面的代码有什么问题?
function onnameEdit(e) {var range = e.range;var sheetName = range.getSheet().getName();var column = range.getColumn();var row = range.getRow();var inputValue = e.value;
if (sheetName == 'Join Queue [FOR ADVISEES]' && column == 6) {var sName = inputValue;var db = SpreadsheetApp.openById('1jdEUJK2uw71YAn_AeK3uEQK77oOtGCVOI12TJHWN0QE').getSheetByName('Login');var snameExists = false;
var recordsData = db.getRange("B:B").getValues(); // Assuming the names are in column B (column 2)
for (var i = 0; i < recordsData.length; i++) {
if (recordsData[i][0].toString().toLowerCase() === sName.toString().toLowerCase()) {
snameExists = true;
break;
}
}
if (!snameExists) {
SpreadsheetApp.getUi().alert("The entered name does not exist in the records. Please register first, or make sure you're entering the correct name.");
range.clearContent();
} else {
var dateCell = range.offset(0, 3); // Assuming the date will be written 3 columns to the right of the edited cell
if (dateCell.getValue() === "") {
dateCell.setValue(new Date()); // Set current date and time
}
}
}}
此外,我还想确保如果接受用户输入,将添加日期单元00
由于事件对象
onEdit()
无法工作,因为 openById()
需要授权,所以我在这里所做的解决方法是使用可安装的触发器。
供您参考限制。
您可以尝试一下这个脚本:
function checkData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = ss.getSheetByName("Join Queue [FOR ADVISEES]"); // spreadsheet B
var activeCell = sheetName.getActiveCell();
var row = activeCell.getRow();
var column = activeCell.getColumn();
var values = sheetName.getRange(2, 6, ss.getLastRow() - 1).getValues();
if (column == 6) {
var sName = values[sheetName.getActiveCell().getRow() - 2][0];
var db = SpreadsheetApp.openById("16j979b6I9aYH1C05Eh6hqb3lkWSRpvDcd123456").getSheetByName('Login') // change this to your own spreadsheet id for Spreadsheet A
var sNameExists = false;
var recordsData = db.getRange("B2:B" + db.getLastRow()).getValues();
for (var i = 0; i < recordsData.length; i++) {
if (recordsData[i][0].toString().toLowerCase() == sName.toString().toLowerCase()) {
sNameExists = true;
var dateCell = sheetName.getRange(row, column + 3);
if (dateCell.getValue() == "") {
dateCell.setValue(new Date());
break;
}
}
}
if (!sNameExists) {
SpreadsheetApp.getUi().alert("The entered name does not exist in the records. Please register first, or make sure you're entering the correct name.");
activeCell.clearContent();
}
}
}
触发设置:
结果:
上面的脚本实现了以下功能: