我的数据如下所示:
Task | Number
A | 1
B | 2
C | 2
D | 3
E | 3
F | 3
有两列。一个是任务,另一个是值。我的目标是使用Google表格,当用户输入任务和数字时,代码将检查所有其他数字
例如,如果我有上述数据,并且用户再次输入
F | 3
代码将拒绝此用户输入
以下是代码。我已经运行了它,并在警告框中运行等式
ss.getRange(i, 2).getValue() == ss.getRange(rng.getRow(), rng.getColumn()).getValue()
统一验证为false。所以下面的代码将声明3 == 3实际上是一个错误的声明。问题是为什么?而且,我该如何纠正这个问题?
function checkEntry(){
//store the range as that cell
var rng = ss.getRange(8, 2)
//ui.alert(rng.getValue());
var dict = {}
var i = 2
var k = 1
//check the sheet
for(i=2;i<=last;i++){
ui.alert(ss.getRange(i, 2).getValue());
ui.alert(ss.getRange(rng.getRow(), rng.getColumn()).getValue());
ui.alert(ss.getRange(i, 2).getValue() == ss.getRange(rng.getRow(), rng.getColumn()).getValue());
}
答案 0 :(得分:0)
我认为这对你有用。
function checkEntry(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rng=sh.getDataRange();
var vA=rng.getValues();
var u=[];//uniques
var r=[];//duplicates
for(var i=1;i<vA.length;i++){
var s=vA[i][0].toString()+vA[i][1].toString();
if(u.indexOf(s)==-1){
u.push(s);
}else{
r.push(i);
}
}
for(var i=vA.length-1;i>0;i--){
if(r.indexOf(i)>-1){
sh.deleteRow(i+1);//delete duplicates
}
}
}