-2

Can someone tell me why these variables marked with red are not recognized as equal (==).

enter image description here

andrewJames
  • 19,570
  • 8
  • 19
  • 51
  • What is this supposed to be? – Ken Sharp Jun 24 '21 at 17:14
  • Side note: I recommend using `===` and `!==` instead of `==` and `!=`. See the discussions here: [Which equals operator (== vs ===) should be used in JavaScript comparisons?](https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons) – andrewJames Jun 24 '21 at 17:43

2 Answers2

0

Google Apps Script is Javascript-based. In Javascript, you can not compare two arrays using ==.

One method is to loop over both arrays and to check that the values are the same. For example you can include the function:

function compareArrays(array1, array2) {
        for (var i = 0; i < array1.length; i++) {
                if (array1[i] instanceof Array) {
                        if (!(array2[i] instanceof Array) || compareArrays(array1[i], array2[i]) == false) {
                                return false;
                        }
                }
                else if (array2[i] != array1[i]) {
                        return false;
                }
        }
        return true;
}

And then update the line in your code from if (responsables == gestPor) { to if (compareArrays(responsables, gestPor)) {

For other methods of comparing arrays in Javascript, see this answer.

cbrxyz
  • 105
  • 5
0

It is because you are comparing arrays. If you are just getting a single cell value, use getValue() instead of getValues()

To make things work, change these:

var gestPor = hojaActivador.getRange(i,13,1,1).getValues();
var responsables = hojaConMails.getRange(1,n,1,1).getValues();

to:

var gestPor = hojaActivador.getRange(i,13).getValue();
var responsables = hojaConMails.getRange(1,n).getValue();

Do these to all getValues() where you're only extracting 1 cell/value.

See difference below: difference

NightEye
  • 10,634
  • 2
  • 5
  • 24