Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

348
Vistas
AppleScript: JavaScript devuelve el valor faltante

El siguiente script se usa para hacer clic en un botón para cargar una fecha en nuestro sitio web y luego obtener el valor de esa fecha.

Luego debería devolver ese valor de fecha, que se usará en algunas comparaciones más adelante. Sin embargo, cuando registro doJavaStuff y emptyDate, ambos regresan como "(*missing value *)". El cuadro de diálogo de visualización para la fecha vacía también devuelve "msng".

¿Por qué no se devuelve el resultado de do JavaScript?

Revisé varios artículos y fuentes y probé varias sugerencias, pero nada funcionó. Por ejemplo, intenté configurar la segunda línea de do JavaScript en una variable y devolver esa variable, pero eso de alguna manera hizo que la variable AppleScript no estuviera definida.

Soy relativamente nuevo en AppleScript, así que tal vez me esté perdiendo algo obvio.

 global emptyDue, serviceDate, doJavaStuff set emptyDue to " " set doJavaStuff to " " set serviceDate to "2021-11-30" on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('trgUseNext').click(); #clicks button to load date. document.getElementById('inspDate').value;" --gets the value of date return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate log doJavaStuff log emptyDate
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pude duplicar su problema usando un elemento que está en esta página de StackOverFlow ( post-id ), usando esta versión simplificada de su secuencia de comandos:

 on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('post-id').value" return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate

El valor de retorno es, como notó, "msng".

El problema parece ser que AppleScript está perfectamente feliz de tener nada más que texto citado en su propia línea, y también está perfectamente feliz de ejecutar do JavaScript sin script. Es decir, el código tal como lo presentó no ejecuta ningún JavaScript: llama a do JavaScript sin nada, y luego la siguiente línea es una cadena de texto que AppleScript ignora.

Si combino las líneas para que sean una sola línea en lugar de dos, display dialog emptyDate muestra el valor esperado de 8 dígitos del post-id del elemento en esta página de StackOverFlow (que se encuentra al ver la fuente).

 on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('post-id').value" return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate

Eso fue extrañamente difícil de rastrear porque ninguno de los "errores" proporcionó un error obvio: do JavaScript sin ningún texto no es un error; en cambio, devuelve una cadena críptica, "msng", que sospecho pero no sé significa "faltante", y una cadena por sí sola en una línea tampoco es un error. Entonces parece que está haciendo algo y no funciona, en lugar de no hacer nada y no funcionar.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda