Skip to content

Instantly share code, notes, and snippets.

@dinesh1301
Created September 13, 2022 14:09
Show Gist options
  • Save dinesh1301/ca8389a9a225b5408c80cf6cdcf622dd to your computer and use it in GitHub Desktop.
Save dinesh1301/ca8389a9a225b5408c80cf6cdcf622dd to your computer and use it in GitHub Desktop.
from __future__ import print_function
import logging
from googleapiclient.discovery import build
# If modifying these scopes, delete the file token.json.
# The ID and range of a sample spreadsheet.
from core.google_api_helper import get_creds
logger = logging.getLogger(__name__)
def __get_google_api_instance(api_name, version):
creds = get_creds()
service = build(api_name, version, credentials=creds)
return service
def __get_sheet_instance():
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
# Call the Sheets API
sheet = __get_google_api_instance("sheets", "v4").spreadsheets()
return sheet
def __get_drive_instance():
return __get_google_api_instance("drive", "v3")
def get_sheet_range(sheet_name, cell_start, cell_end):
return '{0}!{1}:{2}'.format(sheet_name, cell_start, cell_end)
def read_sheet(sheet_id, sheet_name, cell_start, cell_end):
"""Shows basic usage of the Sheets API.
Prints values from a sample spreadsheet.
"""
sheet = __get_sheet_instance()
result = sheet.values().get(spreadsheetId=sheet_id,
range=get_sheet_range(sheet_name, cell_start, cell_end)).execute()
values = result.get('values', [])
return values
def update_sheet(values, sheet_id, sheet_name, start_cell, end_cell):
logger.info("update sheet values")
logger.info(values)
result = __get_sheet_instance().values().update(
spreadsheetId=sheet_id, range=get_sheet_range(
sheet_name, start_cell, end_cell),
body={'values': values}, valueInputOption='RAW').execute()
def get_email_index_map(sheet_id, sheet_name, column):
values = read_sheet(sheet_id, sheet_name, '{0}2'.format(column), column)
index = 1
email_index_map = {}
for row in values:
email_index_map[row[0]] = index
index += 1
return email_index_map
def share_file(file_id, email):
__get_drive_instance().permissions().create(fileId=file_id, body={'type': 'user', 'role': 'writer',
'emailAddress': email}).execute()
def create_sheet(title):
spreadsheet = {
'properties': {
'title': title
}
}
response = __get_sheet_instance().create(body=spreadsheet, fields='spreadsheetId').execute()
return response.get('spreadsheetId')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment