Skip to content

Instantly share code, notes, and snippets.

@hakanu
Last active July 9, 2021 04:38
Show Gist options
  • Save hakanu/be6098447e4d74d26eca to your computer and use it in GitHub Desktop.
Save hakanu/be6098447e4d74d26eca to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""Utility methods for Google Spreadsheets based on gspread library.
Used mostly for logging.
http://hakanu.net/2014/09/14/how-i-store-server-logs-in-google-spreadsheets/
Here are the dependecies:
sudo apt-get install python-pip python-dev build-essential
sudo easy_install gspread
"""
__author__ = 'hakan_uysal@ymail.com'
import string
from timeit import default_timer as timer
import gspread
class SpreadOperations:
def __init__(self, username, password, spreadsheet_name,
worksheet_name='Sheet1'):
# Login with your Google account
gc = gspread.login(username, password)
# Open a worksheet from spreadsheet with one shot
self.worksheet = gc.open(spreadsheet_name).worksheet(worksheet_name)
def InsertRow(self, row_values):
start = timer()
self.worksheet.append_row(row_values)
end = timer()
print 'Completed in ', (end - start) * 1000, ' ms.'
def InsertRows(self, rows):
start = timer()
row_count = self.worksheet.row_count
col_count = self.worksheet.col_count
self.worksheet.add_rows(len(rows))
# Example cell range: 'A2:Y4'.
cell_range = (string.ascii_uppercase[0] + str(row_count + 1) +
':' + string.ascii_uppercase[col_count - 1] +
str(row_count + len(rows)))
cell_list = self.worksheet.range(cell_range)
row_counter = 0
col_counter = 0
for cell in cell_list:
if row_counter < len(rows) and col_counter < len(rows[row_counter]):
cell.value = rows[row_counter][col_counter]
else:
cell.value = '' # Fill up rows with empty str.
col_counter += 1
if col_counter >= col_count:
row_counter += 1
col_counter = 0
self.worksheet.update_cells(cell_list)
end = timer()
print 'Completed in ', (end - start) * 1000, ' ms.'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment