Hello everyone! I have long been a fan of using .csv exports from Shotgun to link with GSuite, allowing me to create custom formatted reports within Google sheets and excel. These reports are never live as they require me to export a .csv of the SG page, copy from this document, and then update my Google sheet.
We have been exporting time logs and uploading them to Google sheets.
However we go the long route of querying Shotgun from Python, and using the gspread library to insert rows into the table.
Generating and inserting the tabular data is actually not that much work, once you get the connection and authentication to google working.
Here is some code for inspiration:
sh = spread.get_worksheet(0)
tl = get_timelog(proj_name)
rows = map(generate_row_from_record, tl)
num_rows = len(rows)
num_cols = len(rows)
# skip first row, which is header
cells = sh.range(2, 1, num_rows + 1, num_cols)
flat_data = sum(rows, )
for data, cell in zip(flat_data, cells):
cell.value = data
# batch update
I am just thinking of creating a similar tool. The problem is that I am not even sure how to actually programmatically export the data from Shotgun apart from manually clicking the Export All Tasks To Excel (CSV). Do you have anything in mind?
I’ve tried using our Shotgrid Event Daemon with a modified logArgs example script from their github to time log status changes to google sheets, but i’m pretty blocked on that.
I basically got all the logs i need going into a file already, but i don’t know where to go from there on to make it write into the google sheet. Checked out some online guides with pygsheets but no luck there. Any more pointers how to set it up with gspread?
Would Appscript be easier to setup? Have never tried it before
Hi there @mmoshev - what’s the best way to host and trigger the python script once I’ve set it up? I want to be able to trigger my python script that syncs data from SG to my Google sheet via a UI menu item in the actual sheet itself. Let me know your thoughts - It’s been a nightmare trying to get this set up.