def get_chart_from_sheet(date): month = date.strftime("%B") result = SheetService().read_sheet(SPREADSHEET_ID, f'{month}!F2:G') values = result.get('values', []) if len(values) == 0: return None title = values[0] values = list(map(convert_to_decimal, values[1:])) values.insert(0, title) html = HTML(html=str(chart_template % {"json": values})) loop = asyncio.new_event_loop() text = threading.Thread(target=render, args=(html, loop)) text.start() text.join() # HEROKU PATH # config = imgkit.config(wkhtmltoimage='.apt/usr/local/bin/wkhtmltoimage') config = imgkit.config( wkhtmltoimage='C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltoimage.exe') content = html.find('#content')[0].html img = imgkit.from_string(content, False, config=config, options={ 'format': 'png', 'crop-w': '650', 'crop-x': '150', 'crop-y': '50', 'crop-h': '400', 'encoding': 'utf-8', }) str_file = io.BytesIO(img) return str_file
def get_sheet_earnings(date, value_render_option='FORMATTED_VALUE'): month = date.strftime("%B") result = SheetService().read_sheet(SPREADSHEET_ID, f'{month}!A3:C', value_render_option=value_render_option) values = result.get('values', []) return values
def get_table_from_sheet(date): month = date.strftime("%B") result = SheetService().read_sheet_multiple( SPREADSHEET_ID, [f'{month}!A2:C', f'{month}!E2:G', f'{month}!I2:K'], major_dimension='COLUMNS') values = result.get('valueRanges', []) header = [] l_ = [] if len(values) > 0: for val in values: header = header + [item[0] for item in val['values']] l_ = l_ + [i[1:] for i in val['values']] scope = PlotlyScope() fig = go.Figure(data=[ go.Table(columnwidth=[80, 150, 100, 80, 150, 100, 100, 100], header=dict(values=header), cells=dict(values=l_, fill=dict(color=[ 'lightgreen', 'lightgreen', 'lightgreen', '#ff9982', '#ff9982', '#ff9982', '#ffbf70', '#ffbf70' ]), height=30)) ]) test = scope.transform(fig, format="png", scale=2) str_file = io.BytesIO(test) return str_file else: return None
def get_sheet_report(date): month = date.strftime("%B") result = SheetService().read_sheet(SPREADSHEET_ID, f'{month}!I3:K3') values = result.get('values', []) return values[0][0], values[0][1], values[0][2]