La cadena de instancia no se comporta como se espera en el script de Google Apps

Quería comprobar si una variable en una secuencia de comandos de aplicaciones era una cadena, pero encontré que instanceof no se estaba volviendo verdadero cuando la variable era en realidad una cadena. La siguiente prueba:

function test_instanceof() {
  var a = "a";
  Logger.log('"a" is ' + ((a instanceof String) ? '' : 'not ') + 'a String');
  var b = String("b");
  Logger.log('String("b") is ' + ((b instanceof String) ? '' : 'not ') + 'a String');
}

Registra estos dos mensajes:

"a" is not a String
String("b") is not a String

Los documentos no son claros sobre el subconjunto de ECMAScript que es compatible, aunque aparentemente instanceof es un operador válido y String es un tipo válido, a juzgar por el hecho de que el código se ejecutó sin excepción.

¿Cuál es la forma apropiada de verificar el tipo de una variable?

Respuestas a la pregunta(1)

Su respuesta a la pregunta