Gonduana

Contenidos para traductores

  • Blog
  • Empieza por aquí
    • Encuesta: coger
    • Encuesta: ratón o mouse
    • Artículos más leídos
    • Vídeos más vistos
    • Gonduana en las redes sociales
    • ¿Quieres saber más sobre mí?
  • Recursos
    • Software para traductores
    • Hardware para traductores
    • Internet para traductores
    • WordPress para traductores
  • Sobre mí
  • Servicios
  • Contacto

Domina las horas con AutoHotkey

Publicado el 3/mayo/2015 por Jesús Prieto

horas con AutoHotkey

Si en el anterior artículo vimos las fechas con AutoHotkey, en este veremos las horas, con casos prácticos para que veas las posibilidades.

Con AutoHotkey podemos manejar las fechas y horas de una forma que nos puede ser muy útil en tareas que no están directamente relacionadas con el proceso de traducción, pero que requieren tu tiempo, tu atención y tus energías.

Quiero decir, que si espabilas antes esas tareas que no son traducción propiamente dicha, podrás dedicar más tiempo a traducir, o hacerlo con más energía, o terminar antes de trabajar y tener más tiempo para ti mismo.

Índice

  • Las fechas y horas con AutoHotkey
  • Abreviaturas humanizadas con AutoHotkey
  • Variables especiales para fechas y horas con AutoHotkey
  • Conclusiones de las horas con AutoHotkey

Las fechas y horas con AutoHotkey

Podremos aprovechar gran parte de las funciones de AutoHotkey con estas líneas:

;--------------------------------
; AUTOHOTKEY Y LAS FECHAS/HORAS
; Inicio de macro de AutoHotkey
;--------------------------------
FormatTime, día, , d
FormatTime, día2, , dd
FormatTime, díaSemana, , WDay
FormatTime, mes, , MM
FormatTime, mesCompleto, , MMMM
FormatTime, año, , yyyy
FormatTime, hora, , H
FormatTime, hora2, , HH
FormatTime, minuto, , m
FormatTime, minuto2, , mm
FormatTime, segundo, , s
FormatTime, segundo2, , ss

En estas primeras líneas empleamos la función FormatTime para asignar la fecha y hora actuales, en el momento en que se ejecuta la macro de AutoHotkey, a ciertas variables: hora, hora2, minuto, segundo, etc.

Por ejemplo, si ejecutas la macro el 9 de mayo de 2015, a las 8 horas, 9 minutos y 10 segundos de la mañana, estas variables tendrán los siguientes valores:

Variable Valor
día2 09 (con cero inicial para completar 2 cifras)
díaSemana 6 (el día 1 es el domingo; 2 es lunes…)
mes 05 (con cero inicial para completar 2 cifras)
mesCompleto mayo
año 2015
hora 8
hora2 08 (con cero inicial para completar 2 cifras)
minuto 9
minuto2 09 (con cero inicial para completar 2 cifras)
segundo 10
segundo2 10 (cero inicial innecesario)

Pues bien, vamos a aprovechar estos valores para hacer tareas que nos pueden interesar.

Ya hablamos en el artículo anterior que AutoHotkey es muy útil para crear plantillas de correo electrónico. Piensa en la variedad de correos que envías cada día con un texto que casi siempre es el mismo:

  • para confirmar al cliente que has recibido un documento que vas a traducir;
  • para enviar un presupuesto al cliente;
  • para enviar el documento traducido al cliente;
  • para enviar tu factura al cliente.

Seguramente se te ocurre alguno más, ¿verdad?

Pues bien, puedes usar las funciones de horas de AutoHotkey, para personalizar un poco tus mensajes.

Por ejemplo, si cuando envías una factura escribes un mensaje más o menos así:

Hola, XX: 
Adjunto la factura correspondiente a esta traducción.
¿Me puedes confirmar que la has recibido correctamente?
Gracias.

donde XX es el nombre de pila de tu cliente, ya sabes que con AutoHotkey puedes escribir todo eso con una abreviatura.

Por ejemplo:

:*:hxxfac1::
	SendInput Hola, XX:{Enter}{Enter}Adjunto la factura correspondiente a esta traducción.{Enter}{Enter}¿Me puedes confirmar que la has recibido correctamente?{Enter}{Enter}Gracias.
return

Al escribir hxxfac1, se escribirá todo el texto que ves, tanto si estás escribiendo tu correo desde un programa como Outlook como si consultas y respondiendo tu correo desde tu navegador web (web mail).

Solo tendrías que escribir el nombre de pila en la plantilla.

Esto no es nuevo, ya lo vimos en este artículo del blog, pero ahora vamos a ver cómo puedes variar el saludo «Hola» para que sea «Buenos días» o «Buenas tardes» en función de la hora en la que envías tu correo electrónico.

Por ejemplo, si quieres que la macro escriba «Buenos días» desde las 7 hasta las 12 horas, «Buenas tardes» de 15 a 19 horas, y el resto, que diga un «Hola» neutro, la macro de AutoHotkey sería así:

; Mensaje de envío de factura
; con texto variable en función de la hora
:*:hxxfac2::
	; Miramos la hora actual
	FormatTime, Hora, , H

	; por la mañana: de 7:00 a 11:59
	if (Hora = 7 or Hora = 8 or Hora = 9 or Hora = 10 or Hora = 11)
		cadena1 = Buenos días

	; por la tarde: de 15:00 a 18:59
	else if (Hora = 15 or Hora = 16 or Hora = 17 or Hora = 18)
		cadena1 = Buenas tardes

	; el resto de horas
	else
		cadena1 = Hola
	cadenaFinal = , XX:{Enter}{Enter}Adjunto la factura correspondiente a esta traducción.{Enter}{Enter}¿Me puedes confirmar que la has recibido correctamente?{Enter}{Enter}Gracias.
	SendInput %cadena1%%cadenafinal%
return

Aquí puedes ver que la variable cadena1 (líneas 55 y 59) toma un valor u otro dependiendo de la hora justa a la que escribes la abreviatura hxxfac2 (supondremos que es la misma que la de envío).

Por supuesto, tienes que tener cuidado y no enviar el correo con «XX», quedarías algo mal con tu cliente…

En otro artículo te enseñaré como puedes escribir automáticamente el nombre del destinatario de tu correo, sin este peligroso «XX».

* * * * *

Un inciso técnico, que te puedes saltar: admito que la línea 54:

if (Hora = 7 or Hora = 8 or Hora = 9 or Hora = 10 or Hora = 11)

quedaría mucho más sencilla así: if (Hora >= 7 and Hora <=11)

Pero el plugin de WordPress que me colorea el código lo hace mal y me inserta puntos y comas después de los símbolos > o <.

🙁

Así que, por motivos técnicos, he tenido que dejarlo como ves arriba…

Incisos aparte, seguimos con lo nuestro.

Abreviaturas humanizadas con AutoHotkey

¿Quieres que estas cadenas de texto no sean tan rígidas y que haya algo «humano», un punto aleatorio?

¡También se puede hacer!

Fíjate en este código modificado del anterior:

; Mensaje de envío de factura
; con texto variable en función de la hora
; pero un cierto nivel de aleatoriedad
:*:hxxfac3::
	; Miramos la hora actual
	FormatTime, Hora, , H

	; por la mañana: de 7:00 a 11:59
	if (Hora = 7 or Hora = 8 or Hora = 9 or Hora = 10 or Hora = 11)
		cadena1 = Buenos días

	; por la tarde: de 15:00 a 18:59
	else if (Hora = 15 or Hora = 16 or Hora = 17 or Hora = 18)
		cadena1 = Buenas tardes

	; el resto de horas
	else
		cadena1 = Hola
	cadenaFinal = , XX:{Enter}{Enter}Adjunto la factura correspondiente a esta traducción.{Enter}{Enter}¿Me puedes confirmar que la has recibido correctamente?{Enter}{Enter}Gracias.
	; creamos un número aleatorio entre 1 y 3
        Random, Aleatorio, 1, 3
	; En el 70% de los casos escribirá la cadena
	; que corresponda a la hora: Buenos días, Buenas tardes.
	; Pero el 30% de las veces escribirá un «Hola» neutro.
	if (Aleatorio = 1 or Aleatorio = 2)
		SendInput %cadena1%%cadenafinal%
	else
		SendInput Hola%cadenafinal%
return

Todo este bloque de código es igual que al anterior hasta la línea 66, donde creamos un número aleatorio entre 1 y 3. De esta forma, solo el 66% de las ocasiones se hará mecánicamente (cuando la variable Aleatorio sea 1 o 2, línea 71), y el 33% restante se tendrá un «Hola» neutral (cuando Aleatorio sea igual a 3, línea 74).

Por supuesto, los porcentajes, las horas y las cadenas de texto  de este código se pueden cambiar a lo que quieras.

Variables especiales para fechas y horas con AutoHotkey

En todo el código visto hasta ahora, sabíamos el día, mes, año, hora, minuto y segundo gracias a la función FormatTime (por ejemplo, en la línea 52).

Quiero que sepas que hay variables internas de AutoHotkey que nos dan directamente estos valores ,y que si te conviene, puedes emplearlas en lugar de la función FormatTime.

Por ejemplo, el siguiente código nos mostraría la fecha y horas actuales cada vez que pulsemos fyh  con el teclado:

;Escribe la fecha y la hora en 2 líneas
:*:fyh::
	cadenaFecha = Hoy es: %A_DD%:%A_MMMM%:%A_YYYY%
	cadenaHora = Son las: %A_Hour%:%A_Min%:%A_Sec%
	Send %cadenaFecha%{Enter}%cadenaHora%
return

Al escribir la abreviatura fyh, tendríamos escrito automáticamente este texto:

Hoy es: 03:mayo:2015
Son las: 14:23:39

Como ves, las variables internas A_DD, A_MMMM y A_YYYY guardan el día, el mes y el año, respectivamente (línea 3); mientras que A_Hour, A_Min y A_Sec hacen lo propio con la hora, los minutos y los segundos (línea 4).

La línea 5 escribe las dos líneas que ves con la fecha y la hora, respectivamente.

Recordamos que en la línea 5, las variables cadenaFecha y cadenaHora van entre signos de porcentaje porque queremos su valor, ¿de acuerdo?

Estas variables tienen su valor actualizado en el momento en que se usan en la macro, así no necesitas la función FormatTime. El punto negativo es que estas variables tienen un nombre un poco raro…

En la Ayuda de AutoHotkey (pulsa F1 en el editor) tienes todas las variables internas de fecha y hora:

Variable interna Explicación
A_YYYY Año en 4 cifras. Ejemplo: 2015.
A_MM Mes en 2 cifras. Ejemplo: 05.
A_DD Día en 2 cifras. Ejemplo: 09.
A_MMMM Mes en letras. Ejemplo: mayo.
A_MMM Mes en 3 letras. Ejemplo: may.
A_DDDD Día de la semana en letras. Ejemplo: sábado.
A_DDD Día de la semana en 3 letras. Ejemplo: sáb.
A_WDay Número de día de la semana. Ejemplo: 6
(1 es domingo).
A_YDay Número del día en el año. Un valor entre 1 y 366.
A_YWeek Año + número de la semana. Ejemplo: 201519.
A_Hour Hora en 2 cifras en formato 24 horas. Ejemplo: 13.
A_Min Minutos en 2 cifras. Ejemplo: 08.
A_Sec Segundos en 2 cifras. Ejemplo: 35.
A_MSec Milisegundos en 3 cifras. Ejemplo: 126.
A_Now Hora en formato YYYYMMDDHH24MISS
A_NowUTC Hora UTC en formato YYYYMMDDHH24MISS
A_TickCount Milisegundos desde que se reinició el PC.
Ejemplo de A_TickCount en macro:
HoraInicio := A_TickCount
Sleep, 1000
HoraFinal := A_TickCount - HoraInicio
MsgBox, Han transcurrido %HoraFinal% milisegundos

Tanto si usas la función FormatTime como si usas las variables internas de fecha y hora, tienes mucho que aprovechar: usa la forma que más cómoda te resulte.

Conclusiones de las horas con AutoHotkey

En este artículo hemos visto aplicaciones de las horas para lanzar textos largos en función de la hora, concretamente en plantillas de correo electrónico.

Te puedo decir que uso personalmente estas plantillas: no es solo que lo escribo el texto más rápido y sin errores, es que no le dedico más que unos pocos segundos a escribir. Son energías que dedico a otras tareas que necesitan mi cien por cien de concentración y que no puedo automatizar.

Ahora es tu turno para ver cómo puedes aprovechar las funciones de horas en AutoHotkey.

Espero haberte dado algunas ideas.

* * * * *

Este artículo se me ha ido de longitud, así que en un próximo artículo aplicaremos las fechas y horas de AutoHotkey de una manera que quizá no te imagines, pero no menos útil para mí: ejecutar programas o abrir documentos al abrir la macro, en función de la fecha y hora…

Así que, atento al blog.

🙂

Entradas relacionadas

Si te ha gustado el artículo, además de compartirlo en tus redes sociales,

puedes leer otros artículos de Gonduana del mismo estilo:

Cómo escribir letras griegas con AutoHotkey

15/octubre/2020

No es algo que se prodigue todos los días, pero si alguna vez has querido escribir alguna letra griega, ¿verdad que no es fácil escribir

Leer el artículo »
Macro de AutoHotkey para pegar sin formato en Word

Macro de AutoHotkey para pegar sin formato en Word

16/julio/2020

Hoy en LinkedIn he leído un artículo de How-To Geek que recomienda usar el atajo de teclado  CTRL + MAYÚS + V  para pegar sin formato en muchas aplicaciones.

Leer el artículo »

Cómo buscar en el diccionario de la RAE con AutoHotkey

6/diciembre/2019

Si te encanta buscar las definiciones en el diccionario, pero te da pereza abrir el diccionario en internet y buscar la palabra, aquí tienes la

Leer el artículo »
Cambiar la conjunción y con AutoHotkey

Cambiar la conjunción «y» a «e» con AutoHotkey

21/octubre/2019

Este artículo es una continuación del anterior, ya que ahora vamos a ver cómo cambiar la conjunción «y» a «e» con AutoHotkey cuando es necesario

Leer el artículo »
Cambiar la conjunción o con AutoHotkey

Cambiar la conjunción «o» a «u» con AutoHotkey

8/octubre/2019

Si se te escapan frases como «siete o ocho», a pesar de que sabes que la conjunción o se cambia a u cuando le sigue

Leer el artículo »
Escribir el símbolo de marca registrada y superíndice 2

Cómo escribir el símbolo de marca registrada ®

30/septiembre/2019

Si quieres escribir el símbolo de marca registrada, es decir, ®, te presento aquí la forma de hacerlo en Word, Trados Studio y en cualquier

Leer el artículo »
Jesús Prieto

Jesús Prieto

Querido traductor: quiero compartir contigo muchas cosas que podrás aprovechar como profesional: desde herramientas especiales hasta técnicas comerciales; desde estrategias de marketing hasta trucos de productividad personal; desde cómo diseñar tu marca personal hasta novedades de impuestos.
Todos los artículos

Publicado en: macros, productividad Etiquetado como: AutoHotkey

Comentarios

  1. Diego dice

    18/mayo/2017 a las 11:44 am

    Muchas gracias por el artículo.

    Quiero que un script almacene la hora en la que empieza y un proceso y la hora en la que termina.
    He probado con A_Now y con FormatTime, pero ambas dan siempre la hora del momento actual.
    Es decir, si por ejemplo hago una variable:
    Hora_Inicio = A_Now
    Cuando uso esa variable no me pone la hora en la que se guardó, sino la actual (se actualiza continuamente, vaya).
    Ocurre lo mismo con el comando FormatTime.

    No sé si te ocurre alguna manera de hacer esto (seguro que tiene que ser fácil... cuando se sabe, como todo :-).

    Aunque, como te digo, está mal, esto es lo que llevo "discurrido" hasta ahora:

    ; Guardar la hora de inicio y de finalización de un proceso.
    #Space::
    Hora_Inicio = A_Now ; Guarda la hora en la que empieza
    Sleep 10000 ; Espera 10 segundos
    Hora_Fin = A_Now ; Guarda la hora en la que finaliza
    FormatTime, Hora_Inicio,,dd/MM/yyyy hh:mm:ss ; Aplica el formato deseado a Hora_Inicio
    FormatTime, Hora_Fin,,dd/MM/yyyy hh:mm:ss ; Aplica el formato deseado a Hora_Fin
    MsgBox, 0, Hora de inicio y de finalización, Inicio: %Hora_Inicio%`nFinalización: %Hora_Fin%
    Return

    Gracias de nuevo y un saludo.

    Responder
    • Jesús Prieto dice

      18/mayo/2017 a las 12:43 pm

      Hola, Diego:

      En las primeras líneas, Hora_Inicio y Hora_Fin tienen el valor correcto.

      Pero como después, el segundo parámetro de la función FormatTime está vacío, te devuelve siempre la fecha y hora actuales, no la que de Hora_Inicio y Hora_Fin, que por cierto, son variables de salida, no de entrada.

      Saludos.

      … Jesús Prieto …

      Responder
  2. Diego dice

    18/mayo/2017 a las 12:51 pm

    Muchas gracias por tu ayuda... tan rápida 🙂

    Cierto, me estaba liando con las variables en FormatTime.
    Ahora ya están bien puestas.
    Las de entrada he tenido que ponerlas entre %% para que las lea bien.

    Aparte, he tenido que definir las variables como expresiones (:=), porque de la forma tradicional no parece que funcione.

    He conseguido que funcione así:

    #Space::
    Inicio := A_Now ; Guarda la hora en la que empieza
    MsgBox, 0, Inicio, Inicio del proceso`n(Esperar 5 segundos), 5 ; Avisa de que se ha iniciado el proceso y espera 5 seg.
    Fin := A_Now ; Guarda la hora en la que termina
    FormatTime, Form_Inicio, %Inicio%, hh:mm:ss ; Determina el formato de la hora de inicio.
    FormatTime, Form_Fin, %Fin%, hh:mm:ss ; Determina el formato de la hora de finalización.
    MsgBox, 0, Inicio y final, %Form_Inicio%`n%Form_Fin% ; Muestra las dos horas.
    Return

    Responder
    • Jesús Prieto dice

      18/mayo/2017 a las 1:26 pm

      Me alegro de que encontraras la forma y gracias por poner la forma que te funcionó.

      Sí, conviene poner := en vez de =, a veces no funciona si no lo haces así…

      Un abrazo.

      … Jesús Prieto …

      Responder
  3. Diego dice

    18/mayo/2017 a las 3:20 pm

    También le he añadido el tiempo transcurrido (00h 00m 00s).

    No sé si para esto habrá alguna función específica... Yo lo he hecho un poco por la "cuenta de la vieja", je je, aprovechando el operador Floor divide (//), que devuelve la parte entera de una división.

    Lapso := Fin - Inicio ; Guarda el número de segundos transcurridos en la variable Lapso.
    Min_Entero := Lapso//60 ; Minutos totales.
    Segs := Lapso - ((Min_Entero) * 60) ; Segundos reales.
    Horas := Min_Entero//60 ; Horas reales
    Mins := Min_Entero - (Horas * 60) ; Minutos reales
    MsgBox, %Horas%h %Mins%m %Segs%s

    Responder

Comentar Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Jesús Prieto

Jesús Prieto 2015

Sobre mí

Lo más visto…

Artículos más leídos de Gonduana
Vídeos más vistos de Gonduana
Gonduana en las redes sociales

Últimos artículos

  • Celda de enfoque en Excel
  • Cómo utilizar la función TRADUCIR en Excel
  • Funciones de expresiones regulares en Excel
  • Reemplazar todo en Trados Studio 2024
  • Cosas que he aprendido este año 2022
  • Cómo escribir letras griegas con AutoHotkey
  • Macro de VBA para pegar sin formato en Word
  • Macro de AutoHotkey para pegar sin formato en Word
  • Extranjerismos en el ajedrez
  • Cómo buscar en el diccionario de la RAE con AutoHotkey

Nube de etiquetas

anglicismos AutoHotkey cobros comodines copias de seguridad correo español Excel foto fórmulas geografía geometría GTD historia imagen impagos InDesign libros marca matemáticas mouse MT ortografía Outlook parábolas PDF PHP poesía power PowerPoint RAE ratón regex retrasos tarifas teclado tipografía TM Trados Studio VBA vídeo Word WordPress XML zoología

Categorías

  • adaptación (3)
  • blog (11)
  • comercial (24)
  • contabilidad (2)
  • español (6)
  • etimología (5)
  • fiscalidad (2)
  • hardware (3)
  • macros (42)
  • marketing (8)
  • noticias (4)
  • productividad (43)
  • seguridad (5)
  • social (9)
  • software (41)
  • TAO (40)
  • terminología (9)
  • traducción automática (3)
  • traducción literaria (1)
  • tradumática (40)
  • vídeo (18)
Buscar en Gonduana
Política de privacidad
Política de cookies
Aviso legal
Creative Commons

Licencia Creative Commons

Blog de Gonduana: recursos para traductores

Esta web usa cookies
Es cansino, sí, pero la ley europea me obliga a avisarte que este blog, como casi el 100%, usa cookies para recabar datos. ¿Estás de acuerdo con mi Política de cookies? Vale Rechazar Más información
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
GUARDAR Y ACEPTAR