Clockify API для получения общего количества записей для пользователя?

#clockify

#clockify

Вопрос:

Я использовал Clockify для отслеживания примерно каждой минуты моего дня за последние 3 месяца в качестве эксперимента. Я нахожусь в процессе извлечения всех моих данных ввода времени из API, чтобы я мог анализировать их и создавать визуализации.

Я бы хотел избежать одновременного получения всех временных записей, поэтому я пишу свой код так, чтобы он учитывал количество записей по умолчанию, а затем пытался разбить его на страницы. Я вычисляю общее количество страниц, беря количество записей, которое я вижу в Clockify UI, и деля его на количество записей по умолчанию на страницу.

Код Python для этой части выглядит следующим образом:

 num_pages = HARDCODED_VALUE
for pagenum in range(1, num_pages   1):
    newurl = url   '?page={}'.format(pagenum)
    r = requests.get(newurl, headers=x_api_header)
    // do stuff (save to file, r.json(), etc.)
 

Хотя мой вариант использования очень специфичен, и человек, выполняющий это, по-видимому, будет следовать аналогичной процедуре, я хотел бы знать, существует ли более программный способ подсчета общего количества записей для данного пользователя в определенной рабочей области? Я не смог найти подобную функцию или что-то похожее на индикаторы разбивки на страницы в ответе от Clockify API.

Ответ №1:

Это немного поздно, но чтобы получить количество записей для пользователя, вы можете использовать конечную точку сводного отчета, поскольку она включает entriesCount поле, которое суммирует все записи для вашего запроса независимо от ограничений страницы. Вы можете установить startRangeStart параметр на дату, когда вы запустили свою учетную запись, и dateRangeEnd параметр для текущего дня. Наконец, вы можете фильтровать по определенному идентификатору пользователя.

Запрос: https://reports.api.clockify.me/v1/workspaces/xxxxxxx/reports/summary

Текст СООБЩЕНИЯ:

 {
  "dateRangeStart": "2010-01-01T00:00:00.000Z",
  "dateRangeEnd": "2020-12-17T23:59:59.000Z",
  "summaryFilter": {"groups": ["USER","TIMEENTRY"]},
  "exportType": "JSON",
  "users": {
    "ids": ["xxxxxxxxxx"],
     "contains": "CONTAINS",
    "status": "ALL"
  }
}
 

Группировки в разделе summaryFilter «TIMEENTRY» будут возвращать каждую отдельную запись времени, но это не должно иметь значения, если вы просто используете entriesCount поле для разбивки на страницы в сочетании с вашим исходным запросом.

Комментарии:

1. Спасибо за ваш ответ! Хотя для меня это было немного поздно, это поможет другим, у кого возникнет подобный вопрос в будущем! 🙂 Кроме того, вы можете найти конечный продукт проекта здесь: github.com/zaataylor/time-tracking