Как насчет этой модификации? Значение, полученное с помощью getValues()
, является двумерным массивом. Учитывая это, сценарий изменяется.
Шаблон 1:
Если ваш скрипт изменен, как насчет этой модификации?
От:
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
};
};
- В вашей ситуации вы можете заменить
if(rangeValues[i][0].toString() === rangeValues2[j][0].toString()){
на if(rangeValues[i][0] === rangeValues2[j][0]){
.
Шаблон 2:
Как и другой шаблон, как насчет этой модификации?
От:
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);
Примечание:
- Причина того, что
vi===vj
вашего добавленного скрипта работает, заключается в следующем.
- Когда запускаются
rangeValues[i].toString()
и rangeValues2[j].toString()
, одномерный массив преобразуется в строку типа ["sample"]
в "sample"
. По этому vi===vj
работает.
Ссылки:
Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.