Batch time log reporting

Hi, I have a systemic problems with my artists. Depending on the complexity in a commercial we work on, I divide the task on per shot basis, or just create one task for entire commercial project - for example - online_compositing, fx, tracking etc.

People working on the project at the end of the day will report and create time logs for 1 or 2 tasks.

Problem starts when I have something more complex and each shot have separate online_compositing task. Quite often one compositor is doing changes to 10-15 shots in day, they might be minor things but still 15 shots have been modified and time-log should be done for each of them - even if they just simplify and divide 8h work / 15 tasks and put that in.

Is there any way I can automate that for them - so they just mark the tasks they worked on this day and input over time - like 8h and the system automatically distributes the time evenly into every task marked.

I need to find a way to do batch reporting - it takes way too long to do it manually.

I can always create one separate task just for reporting - but that would defeat the purpose of task structure and budgeting etc.

Any help would be appreciated.
Thanks in advance


Hi @Flint78,

Interesting situation. We don’t have anything out of the box which would support batch creation of time logs across tasks. If I put my pipeline engineer hat on, you might be able to tackle this pretty easily with an action menu item (AMI) if you have a developer on the team.

  • You’d setup an AMI on the Task entity.
  • The AMI would support multi-selection of tasks.
  • When the AMI is selected it would send it’s payload to a small web app your team writes.
  • The web app would receive a list of selected tasks and would then prompt how many hours should be divided among those tasks. Maybe even offer an interface so that you can unevenly distribute the time (one time field per task?).
  • When the user presses “submit” on the custom web app, the app would call back into Shotgun to create the TimeLog records on behalf of the user.

This should be pretty straightforward to implement using the Python API and something like the Flask web framework.

Here is some documentation on AMIs

Here’s a stub that you can run on your local machine using Flask and point an AMI to in order to inspect the payload: Ultimately your web app would be hosted on one of your servers but it would be lightweight enough it wouldn’t be using much resources.

Let me know if this is helpful.


Thanks, seams logical approach. Looks like a simple task for a dev. I need to look for one for things like that. Time to customise SG for our internal needs.