Package: slackspread
IntroductionThis package contains two classes that are basic wrappers around slack and
google spread APIs meant to be used to build more complex programs (including
slack bots) upon them. Installing is simply made using pip:pip3 install --upgrade slackspreadOnly installation will be covered here, head over to the specific documentation
about the slack bothereand the google spreadsheet wrapperhere.Connect to slack API withSlackBot()If using the slack API with python is new to you, head overhereto get a nice introduction. When everything is in place and you’ve got a slack bot
token from Slack, store it as an environment variable (MYBOT_TOKENin
the below exemple) and initiate the slack web client on python by giving the
variable’s name as argument.fromslackbotimportSlackBotmybot=SlackBot(token="MYBOT_TOKEN")Connect to google spread API withGspread()Gspreadrevolves on a json credentials file to authenticate on google
spreadsheets API. Theinitmethod ofGspreadneeds both a credentials
json file and a set of environment variables to replace sensitive values on
the json credentials file.Details on have to obtain that file can be foundhere.
This file would generally have the following form{
   "type": "service_account",
   "project_id": "#project id",
   "private_key_id": "#private key id",
   "private_key": "#private key",
   "client_email": "#client email",
   "client_id": "#client id",
   "auth_uri": "https://accounts.google.com/o/oauth2/auth",
   "token_uri": "https://oauth2.googleapis.com/token",
   "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
   "client_x509_cert_url": "client certification url"
}Some of the fields in thecredentials.jsonmust be kept private (in the above
example, the ones preceded with#), so we strongly
advise to replace those fields with empty or non-explicit values in the json file,
especially if you’re to push it to git repository, and use environment variables
to store those fields instead. TheGspreadobjectwilllook for environment
the following variables at initialisation:PROJECT_ID
PRIVATE_KEY_ID
PRIVATE_KEY
CLIENT_ID
CLIENT_EMAIL
CLIENT_X509_CERT_URLMore precisely,Gspread()takes three arguments plus an optional :name:name of spreadsheet to connect toenviron_prefix:prefix for above listed environment variablescredentials:path to json file containing credentials withfalsesensitive
fieldsenviron_vars:list of variables to populate from environment variables within the
credentials file. IfNone, all of the above will be changed. If
a list of zero length, none will be changedThe prefix is combined to the above-listed variables names to build the environment
variables names that the class will look for. Theinitmethod will
replace the corresponding fields in thecredentials.jsondictionary with the
values read from those variables.Say your project’s name is something likemy daily budget. You
would first store the following environment variablesBUDGET_PROJECT_ID
BUDGET_PRIVATE_KEY_ID
BUDGET_PRIVATE_KEY
BUDGET_CLIENT_ID
BUDGET_CLIENT_EMAIL
BUDGET_CLIENT_X509_CERT_URLAnd store somewhere acredentials.json, let’s say at~/.gscredits/budget-credentials.json(on which you would have
replaced the sensitive fields with non-explicit or wrong values). All you need
to do is callGspreadwith the following syntax :fromeasyspreadimportGspreadbudget_spread=Gspread(name='my daily budget',environ_prefix='BUDGET',credentials="~/.gscredits/budget-credentials.json")Using environment variables makes it possible to have your code working while
being safe on a network server, since the json file is stored without any sensitive
data in it and the sensitive values are protected as environment variables.Note that you can use the same credits for different spreadsheets. Each set of
credits corresponds to a single project on google cloud, but can connect toanyspreadsheet, provided it was authorized to in the spreadsheet’s parameters.