SlackbotでSpreadsheetsに書き込む方法について説明する記事です。
「Google APIでSpreadsheetsを利用する方法」、「PythonでSpreadsheetsに書き込む方法」、「Botの実装方法」の3つについて説明します。
PythonでのSlackbotの基本的な実装方法は「SlackbotをPythonで作成しよう」をお読みください。
目次
Google APIでSpreadsheetsを利用する方法
Spreadsheetsを利用する方法を説明します。
手順は「「Google Cloud Platformに登録する」、「APIを有効にする」、「Google Sheets APIを追加する」の3つです。
Google Cloud Platformに登録する
Google Cloud Platformにアクセスしてユーザー登録します。
APIを有効にする
セットアップ ツールの手順に従って「Google Cloud Platform」に登録し、暗号鍵を作成します。
Google Sheets APIを追加する
「Google Cloud Platform」のライブラリより「Google Sheets API」を追加します。
APIのページGoogle Sheets APIを追加します。
関連記事>>Qiita:Google Analyticsの情報をPythonで取得する
SlackbotでSpreadsheetsに書き込む方法
Spreadsheetsに書き込む方法について説明します。
Spreadsheetsを共有する
書き込みを行うためにはスプレッドシートを共有する必要があります。
メールアドレスを入力します。
client_secrets.jsonに書かれている「client_email」のメールアドレスを使用します。
完了をクリックすれば設定完了です。
ライブラリをインストール
APIドキュメントの手順にしたがってライブラリをインストールします。
1 2 3 | pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib pip istall gspread |
スプレッドシートに書き込む処理を実装する
スプレッドシートに書き込む処理を実装例を説明します。
以下は空の列にデータを追加するプログラムの実装方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import gspread from oauth2client.service_account import ServiceAccountCredentials # SpreadSheetsを読み込むクラス class SpreadSheetReadWrite: def __init__(self, json, scope, file): # パラメータ設定 self.scope = scope self.json = json self.file = file # 認証設定 self.credentials = ServiceAccountCredentials.from_json_keyfile_name(self.json, self.scope) self.gc = gspread.authorize(self.credentials) # スプレッドシート列の末尾にデータを追加する def append_value(self, text, col): wks = self.gc.open(self.file).sheet1 row = 1 # 空のセルを探す for i in range(1, 3000): row = i cell = wks.cell(row, col) # 空の列に書き込む if str(cell.value) == '': break # テキストを出力 wks.update_cell(row, col, text) def main(): scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] # ダウンロードしたJSONファイル json = 'client_secrets.json' # 対象spreadsheetsのファイル名 file = 'テスト' s = SpreadSheetReadWrite(json, scope, file) s.append_value(6, 1) if __name__ == "__main__": main() |
↓
Slackbotから呼び出す処理を作成する
上記のコードの下に以下のコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from slackbot.bot import respond_to @respond_to('^スプレッドシート書き込みs(.*)$') def show_file_info(message, text): scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] # ダウンロードしたJSONファイル json = 'client_secrets.json' # 対象spreadsheetsのファイル名 file = 'テスト' s = SpreadSheetReadWrite(json, scope, file) s.append_value(text, 1) message.send('書き込みました') |
◆実行結果
実行すると6の下に7が追加されます。
まとめ
今回はスプレッドシートに書き込む方法について紹介しました。
スプレッドシートに書き込みができれば処理結果を吐き出したり勤怠管理などいろいろな場面で活用できます。
GoogleAPIの登録が少し手間ですが、プログラム自体は割と簡単にできるので機会があったら挑戦してみてください。
関連記事>>【Python+Todoist】スプレッドシートにタスクを出力する
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜