Si te encuentras con alguna parte que te causa duda puedes comentarlo y te responderemos lo más rápido posible.
Solución:
EDITAR (2019-04-07): Por favor tenga en cuenta. Con la actualización V8 esperada (ECMAScript 2017) para App Script, el lenguaje admitirá de forma nativa Array.prototype.includes
y muchas otras características modernas de Javascript en un futuro próximo.
La solución más sencilla para array.prototype.includes
es usar el siguiente polyfill de MDN en su proyecto de script de aplicaciones. Simplemente cree un archivo de script y pegue el siguiente código: el código/polyfill agregará la función directamente al objeto prototipo Array:
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
if (!Array.prototype.includes)
Object.defineProperty(Array.prototype, 'includes',
value: function(searchElement, fromIndex) 0;
// 5. If n ≥ 0, then
// a. Let k be n.
// 6. Else n < 0,
// a. Let k be len + n.
// b. If k < 0, let k be 0.
var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
function sameValueZero(x, y)
return x === y
// 7. Repeat, while k < len
while (k < len)
// a. Let elementK be the result of ? Get(O, ! ToString(k)).
// b. If SameValueZero(searchElement, elementK) is true, return true.
if (sameValueZero(o[k], searchElement))
return true;
// c. Increase k by 1.
k++;
// 8. Return false
return false;
);
Para array.prototype.flat
el sitio MDN también ofrece soluciones alternativas. Uno de los cuales aprovecha array.prototype.reduce
y array.prototype.concat
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat#Alternative
Reemplace la .includes()
con .indexOf()+1
(se producirá 0
si el elemento no está presente, de lo contrario producirá un número entero entre 1 y la longitud de su array). Funciona en Google Script.
if(array.indexOf("val4")+1) doSomething;
Fue con if(array.indexOf("val4") > -1) doSomething;
como se sugiere en los comentarios
Primero decidí ir con array.filtrar():
var test = array.filter(element => element == "val4");
if(test != null) doSomething;
Pero como se indica a continuación, las funciones de flecha no funcionan en Google Apps Script.
Pero mientras buscaba una respuesta encontré esto para resolver 1):
function flatten(arrayOfArrays)
return [].concat.apply([], arrayOfArrays);
Definitivamente mejor de lo que hubiera sido capaz de pensar.
valoraciones y reseñas
Recuerda que puedes compartir esta división si te valió la pena.