Calendar Timesheet

Cómo convertir Google Calendar en un registro de horas

Actualizado el 19 de octubre de 2026. Lectura de unos 7 minutos.

Si ya anotas tu trabajo para clientes en Google Calendar, tienes casi todo un registro de horas. Lo que te falta es una lista con fechas y duraciones, y los totales por cliente. Google Calendar no la genera: su exportación es un archivo de calendario, no una tabla. Aquí tienes tres formas de conseguirla, de la gratuita y manual a la totalmente automática, y los detalles que, sin que se note, falsean los totales.

Método 1: a mano, en una hoja de cálculo

Abre Google Calendar en la vista Semana, abre al lado una hoja de cálculo de Google vacía y escribe una fila por reunión: fecha, inicio, fin y cliente. Añade una columna con =(C2-B2)*24 para obtener las horas y un total al final.

No cuesta nada y funciona con unas pocas reuniones a la semana. A partir de ahí, te quita tiempo cada semana y los errores de escritura no se ven: nadie vuelve a comparar con el calendario un 14:30 escrito a mano.

Método 2: un script corto en Hojas de cálculo de Google

Hojas de cálculo de Google puede leer tu calendario con Apps Script, la herramienta de scripts integrada de Google. En una hoja de cálculo nueva, abre Extensiones y luego Apps Script, pega este código, ajusta las dos fechas y ejecuta listMonth. Google te pedirá que autorices tu propio script.

function listMonth() {
  var cal = CalendarApp.getDefaultCalendar();
  var start = new Date(2026, 9, 1), end = new Date(2026, 10, 1); // October 2026
  var rows = [['Date', 'Start', 'End', 'Hours', 'Title', 'Colour']];
  cal.getEvents(start, end).forEach(function (e) {
    if (e.isAllDayEvent()) return;
    var hours = (e.getEndTime() - e.getStartTime()) / 3600000;
    rows.push([e.getStartTime(), e.getStartTime(), e.getEndTime(), hours, e.getTitle(), e.getColor()]);
  });
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
}

En Apps Script, los meses se cuentan desde 0, así que new Date(2026, 9, 1) es el 1 de octubre. Obtienes una fila por evento con su duración y su número de color (el script escribe los encabezados en inglés: Date, Start, End, Hours, Title y Colour). A partir de ahí, una tabla dinámica o SUMAR.SI te dan los totales (la guía Contar horas en Google Calendar por cliente, color o semana muestra las fórmulas).

Es una buena opción gratuita si te manejas con un poco de código. Solo lee tu calendario principal y hereda todas las trampas que se enumeran abajo, salvo que las resuelvas tú.

Método 3: automáticamente, con un complemento

Un complemento hace la misma lectura por ti, de forma programada. Calendar Timesheet, que desarrollamos nosotros, lee cada hora los calendarios que eliges, asigna cada reunión a un cliente por color, calendario, una palabra del título o el dominio de correo de los invitados, y mantiene al día una pestaña Este mes. El día 1 cierra el mes anterior con un informe por cliente y te envía un resumen por correo. La exportación de cualquier periodo es gratis; los clientes, las tarifas y el piloto automático forman parte de Pro, con una prueba que dura hasta tu primer fin de mes.

Otros complementos exportan los eventos en bruto a una hoja; eso le viene bien a quien quiere montar su propio informe. Las trampas de abajo son lo que separa una exportación en bruto de un registro de horas con el que puedes facturar.

Las trampas que falsean los totales

Reuniones que cruzan un límite

Un taller de 22:00 a 01:00 el 31 de octubre pertenece a dos meses. Contarlo entero en octubre infla la factura de octubre y deja corto noviembre. Solo debe contar la parte que cae dentro del periodo.

Invitaciones rechazadas y sin respuesta

Los scripts de calendario devuelven eventos que has rechazado. Si alguien te invita a una reunión que declinaste, aparece igualmente en una exportación sin filtrar. Filtra por tu propia respuesta.

Eventos de todo el día y tiempo "disponible"

Las vacaciones, los días de viaje y los recordatorios suelen ser eventos de todo el día o estar marcados como "disponible". No son tiempo de trabajo, y un evento de todo el día leído como 24 horas destroza un total.

La misma reunión en dos calendarios

Si un cliente te invita y además copias la reunión en tu calendario de trabajo, una exportación de ambos calendarios la cuenta dos veces. Los eventos comparten un identificador (iCalUID) que puedes usar para quedarte con uno solo.

Reuniones periódicas con excepciones

Una llamada semanal que se movió una semana y se canceló otra debe contar como ocurrió, no como dice la serie. Lee cada repetición por separado, no la serie.

Zonas horarias

Si tu hoja de cálculo y un calendario usan zonas horarias distintas, las horas de inicio se desplazan. Usa una sola zona horaria para el registro de horas, normalmente la de la hoja de cálculo.

Un registro de horas fiable: la lista de comprobación

  1. Elige una forma de etiquetar a los clientes (color, calendario, palabra del título o dominio de los invitados) y mantenla.
  2. Cuenta solo la parte de cada reunión que cae dentro del periodo.
  3. Deja fuera las invitaciones rechazadas, los eventos de todo el día y el tiempo marcado como disponible.
  4. Cuenta una sola vez la reunión que aparece en dos calendarios.
  5. Congela cada mes una vez facturado, para que los cambios posteriores en el calendario no alteren lo que enviaste.

¿Quieres que se haga solo, cada hora? Calendar Timesheet se ocupa de cada punto de esta lista, en tu propia hoja de cálculo de Google, sin crear ninguna cuenta.

Instalar gratis