Google apps script 相同的值在if条件下不匹配
这是我第一次尝试Google Sheets脚本 我试着比较两张表中第一列的每一行 如果表1中的任何值不在表2中,我会将其添加到表2的末尾 这是代码,比较值从不匹配,我尝试了==,==,带和不带toSting()。我从未得到标志Google apps script 相同的值在if条件下不匹配,google-apps-script,google-sheets,google-sheets-macros,Google Apps Script,Google Sheets,Google Sheets Macros,这是我第一次尝试Google Sheets脚本 我试着比较两张表中第一列的每一行 如果表1中的任何值不在表2中,我会将其添加到表2的末尾 这是代码,比较值从不匹配,我尝试了==,==,带和不带toSting()。我从未得到标志found=1,sheet1 col1中的所有值都复制到sheet2 col1 var ui = SpreadsheetApp.getUi(); var ss = SpreadsheetApp.getActiveSpreadsheet(); function Prueba
found=1
,sheet1 col1中的所有值都复制到sheet2 col1
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
function Prueba2() {
var sheet = ss.getSheets()[0];
var rangeData = sheet.getDataRange();
sheet.getRange('A1').activate();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(2,1, lastRow, 1);
var sheet2 = ss.getSheets()[1];
var rangeData2 = sheet2.getDataRange();
var lastRow2 = rangeData2.getLastRow();
var searchRange2 = sheet2.getRange(2,1, lastRow2, 1);
var l1= searchRange.getLastRow();
var l2= searchRange2.getLastRow();
var rangeValues = searchRange.getValues();
var rangeValues2 = searchRange2.getValues();
var found=0;
var arr = [];
// Loop through array and if condition met
for ( i = 0; i < lastRow - 1; i++){
found=0;
for ( j = 0 ; j < lastRow2 - 1; j++){
var vi=rangeValues[i];
var vj=rangeValues2[j];
if(rangeValues[i].toString() === rangeValues2[j].toString()){
found=1;
break;
};
};
if (found==0){
Logger.log(rangeValues[i]);
arr.push(rangeValues[i]);
};
};
var toAddArray = [];
for (k = 0; k < arr.length; ++k){
toAddArray.push([arr[k]]);
}
sheet2.getRange(lastRow2+1, 1, arr.length, 1).setValues(toAddArray);
};
var ui=SpreadsheetApp.getUi();
var ss=SpreadsheetApp.getActiveSpreadsheet();
函数prueb2(){
var sheet=ss.getSheets()[0];
var rangeData=sheet.getDataRange();
sheet.getRange('A1').activate();
var lastRow=rangeData.getLastRow();
var searchRange=sheet.getRange(2,1,最后一行,1);
var sheet2=ss.getSheets()[1];
var rangeData2=sheet2.getDataRange();
var lastRow2=rangeData2.getLastRow();
var searchRange2=sheet2.getRange(2,1,lastRow2,1);
var l1=searchRange.getLastRow();
var l2=searchRange2.getLastRow();
var rangeValues=searchRange.getValues();
var rangeValues2=searchRange2.getValues();
var=0;
var-arr=[];
//循环遍历数组,如果满足条件
对于(i=0;i
编辑
这很有效,但我不知道为什么
for ( j = 0 ; j < lastRow2 - 1; j++){
var vi=rangeValues[i].toString();
var vj=rangeValues2[j].toString();
//if(rangeValues[i] === rangeValues2[j]){
if(vi===vj||vi==""){
found=1;
break;
};
};
(j=0;jgetValues()
检索到的值是二维数组。考虑到这一点,脚本就被修改了
模式1:
如果你的脚本被修改了,这次修改怎么样
发件人:
致:
注:
- 添加脚本的原因如下所示。
- 当运行
和rangeValues[i].toString()
时,一维数组将转换为字符串,如rangeValues2[j].toString()
到[“sample”]
。这样,“sample”
起作用vi==vj
- 当运行
如果我误解了您的问题,并且这不是您想要的结果,我很抱歉。由@Harold提供的解决方案可能会为您提供一种用索引替换一个循环的方法,感谢您的澄清。我将研究函数(e)看起来更优雅、更高效。这是100%java吗?@Horaciux谢谢你的回复。我很高兴你的问题得到了解决。这是Javascript。但是Google Apps脚本不同于最新的Javascript。你可以在上看到官方文档。
for ( i = 0; i < lastRow - 1; i++){
found=0;
for ( j = 0 ; j < lastRow2 - 1; j++){
var vi=rangeValues[i];
var vj=rangeValues2[j];
if(rangeValues[i].toString() === rangeValues2[j].toString()){
found=1;
break;
};
};
if (found==0){
Logger.log(rangeValues[i]);
arr.push(rangeValues[i]);
};
};
for ( i = 0; i < lastRow - 1; i++){
found=0;
for ( j = 0 ; j < lastRow2 - 1; j++){
// var vi=rangeValues[i]; // This is not used in this script.
// var vj=rangeValues2[j]; // This is not used in this script.
if(rangeValues[i][0].toString() === rangeValues2[j][0].toString()){ // Modified
found=1;
break;
};
};
if (found==1){ // Modified
Logger.log(rangeValues[i][0]); // Modified
arr.push(rangeValues[i][0]); // Modified
};
};
var found=0;
var arr = [];
// Loop through array and if condition met
for ( i = 0; i < lastRow - 1; i++){
found=0;
for ( j = 0 ; j < lastRow2 - 1; j++){
var vi=rangeValues[i];
var vj=rangeValues2[j];
if(rangeValues[i].toString() === rangeValues2[j].toString()){
found=1;
break;
};
};
if (found==0){
Logger.log(rangeValues[i]);
arr.push(rangeValues[i]);
};
};
var toAddArray = [];
for (k = 0; k < arr.length; ++k){
toAddArray.push([arr[k]]);
}
sheet2.getRange(lastRow2+1, 1, arr.length, 1).setValues(toAddArray);
var toAddArray = rangeValues.filter(function(e) {return rangeValues2.some(function(f) {return e[0] && f[0] && e[0] == f[0]})});
sheet2.getRange(lastRow2+1, 1, toAddArray.length, 1).setValues(toAddArray);