Googleドライブを使用してスプレッドシートを保存します。 必要に応じてどこからでもアクセスできるので、そうすることにしました。 また、データを安全に保ち、ローカルファイルがあることを心配する必要はありません。 したがって、Googleアカウントが必要になります。 まだ持っていない場合は、 一つ作る.
PythonスクリプトをGoogleアカウントに接続するには、Googleドライブ/スプレッドシートAPIを有効にする必要があります。 YouTubeのこのビデオ ティムとの技術 プロセスを完全に説明します。要約すると、次のようになります。
- スプレッドシートを作成し、いくつかのセルに入力します。これをテストに使用します。 固有名詞を付けてください。
- Google クラウド コンソール 新しいプロジェクトを作成します。
- GoogleドライブAPIを有効にし、設定します Webサーバーへのアクセス、読む アプリケーションデータ、と プロジェクト>編集者の役割。 資格情報をJSON形式でダウンロードし、プロジェクトフォルダーに保存してください(安全に保管してください)。
- Google SheetsAPIを有効にします。
ここで、スクリプトとシートが適切に再生されていることを確認するために、Pythonでいくつかのテストを行うことができます。 最初に行う必要があるのは、新しく作成したスプレッドシートと対話するためにいくつかのライブラリをインストールすることです。
pip インストール gspread
pip インストール gspread-dataframe
pip インストール oauth2client
これで、シートからデータをダウンロードしたり、データを編集したり、再度アップロードしてシートを更新したりすることができます。
次に、シートにデータを入れてテストします。
次に、creds.jsonファイルに移動し、「client_email」を探します。 これは、GoogleドライブAPIで割り当てられたアドレスです。 作成したシートをそのメールで共有します。
これで、Pythonでクライアントを初期化し、シートに接続できます。
後で行の操作を開始するときに役立つため、データをデータフレームに取り込みます。 データフレームは次のようになります。
日付タイプ説明価格
0 30年2020月11.0日フードテイクアウトXNUMX
1 31年2020月42.1日輸送ガソリンXNUMX
2 1年2020月56.5日食料品XNUMX
3 2年2020月13.0日フードバーガーXNUMX
4 3年2020月19.5日服TシャツXNUMX
5 ナン ナン ナン ナン
6 ナン ナン ナン ナン
7 ナン ナン ナン ナン
8 ナン ナン ナン ナン
.. ... .........。
これらの列はすべて文字列(dtype:object)としてインポートされるので、正しい形式を指定しましょう。
この時点で、データの要約を好きなように取得できます。 ここでは詳しく説明しませんが、例を挙げると、ピボットを使用して集計し、次のようなものを生成できます。
タイプ衣類食品輸送
日付
2020 年 08 月 NaN 11.0 42.1
2020-09 19.5 69.5 NaN
次に、Telegramボットと、経費を送信するチャネルを作成します。 ボットを作成するには、に書き込む必要があります TelegramのBotFather、 コマンドを送信します /開始、および指示に従ってボットを作成します。 あなたは受け取ります トークン、安全に保管してください!
作成後、コマンドを送信します / setprivacy、新しいボットを選択してから 無効にします。 これにより、ボットは、「/」で始まるメッセージ(「コマンド」と呼ばれる)だけでなく、チャネルに着信するすべてのメッセージを読み取ることができます。
次に、テレグラムチャネルを作成し、ボットのユーザー名を追加します。
これで、すべての費用を処理するPythonスクリプトの作成を開始できます。 次の手順から始めることができます。
- 必要になるすべてのライブラリをインポートします
- 変数を定義する
- 経費シートとの接続を開きます
- フォーマットされたデータフレームにデータを取得します
関数の横。 シンプルなワークフローが必要です。
- 経費の説明とその価格をカンマで区切って入力します。
- ボットは、経費がどのタイプに属するかを尋ね、ボタンとして可能なタイプの事前定義されたセットを提供します。
- ボタンを押してタイプを選択すると、ボットは経費をシートの新しい行として保存します。
このために、2つのメソッドを作成します。XNUMXつは受信メッセージを処理し、選択できる経費の「タイプ」を提供し(「input_expense」)、もうXNUMXつはボタンを押すと経費をシートに保存します(「callback_query_handler」、この名前を尊重する必要があります):
最後に、を作成します ボット オブジェクト、ハンドラーの追加、およびポーリングの開始:
これで、チャネルに経費を送信できるようになります(次の形式で送信することを忘れないでください: 説明、価格)、 そしてその ボット シートにあなたの費用を節約します: