ブログPython大好きなAI研究所のショウと申します。前回と前々回に引き続き機械学習だけではないPythonの実用的な使い方をお伝えしたいと思います!今回のテーマは、「Gmailから抽出した依頼メールを自動的にタスク分けし、業務ステータスごとに分類。本日のやることリストをSlackに送る」です。第一回の記事はこちら第二回の記事はこちら前回の記事の簡単なおさらいを見てみましょう。以下の其の三まで進めておりました。Googleにアクセスし、ユーザー認証データを取得し、認証を実行します。Gmailのサービスを取得し、GmailのAPIが使えるようにします。メッセージの一覧を取得し、該当するメッセージを振り分けます。そのメッセージを分割し、タスク分けをして、スプレッドシートに転記します。分割した本文とスプレッドシートの内容から、Slackに送るテンプレート文を作成します。Slackにメッセージを送ります。今回は其の四からのスタートです。スプレッドシートにアクセスして、前回取得した情報をタスクステータスとして転記する作業からスタートします。コードの全体を見てみましょう。これ一発でできるが、列の順番がバラバラになるので、仕方なしに下記の方法。temp_arr.append(f'{k}の日々。temp_arr.append(f'{k}どうなるか。temp_arr.append(f'{k}への思い。task4mail,tasksここから、一つづつのコードを説明していきます。等の必要なモジュールをインポートします。これ一発でできるが、列の順番がバラバラになるので、仕方なしに下記の方法。全てのレコードを取得しています。column(列名)を取得した後、row(行)を一行ずつリスト内包表記を使って取得していきます。使って、データフレームに変換します。データフレームオブジェクトを返す関数を作成します。jpholiday.year_holidays(2019)]ここからメインの関数作成です。オブジェクトを引数とし、todayオブジェクトをグローバル変数にすることを宣言します。先程作ったaccess_sheet()からワークシートオブジェクトとデータフレームオブジェクトを受け取ります。メールを受け取った日付をdatetimeのstrptimeメソッドで文字列からdatetimeオブジェクトに変換し、todayに格納します。スプレッドシートに新しいタスクを記入するために”入稿日”以外の空の辞書を作成します。使えば、(例えば今年の2月28日の次は3月1日)と判定してくれます。(月曜から日曜までが1から6で返される。)今年の祝日をjpholiday.year_holidays(年)を使って、リストとして取得します。文を使って、”明日は「校正日」、次の日は土日なので、月曜日は「社内提出日」”等、条件を追記してタスクを振り分けています。祝日かどうかも先にループの先頭で判定して、祝日以外を日付が指すように調整しています。temp_arr.append(f'{k}の日々。temp_arr.append(f'{k}どうなるか。temp_arr.append(f'{k}への思い。new_rows.append(temp_arr)すべてのタスクが格納できたら、すでに割り振りされている、一番最後のタスクIDを管理表から取得します。渡し、Slackに送るためのリストと辞書を取得します。管理表に転記するための新しい行を作るために、空のリストを作ります。バリューを連結させます。新しくタスクを加えた行分だけ、データフレームを作成します。あったワークシートのデータフレームと、新しく作ったデータフレームを合体させます。整数のリストにして、合体させたデータフレームのインデックスに指定させます。報告する用の定型文を作るため、空のリストを作成します。メソッドを使用し、対応するインデックス番号と一緒にループさせます。「校正日以降」なので、インデックス番号6以降を指定します。ちなみに、インデックス番号は「0」からスタートします。後で書くis_today関数をapply()メソッドに渡し、列名と今日の日付ごとに対応した、ステータスを定型文として、to_bossに付け足していきます。その後、一気にスプレッドシートへアクセスし、内容を更新していきます。メソッドに渡す本日のタスクを探すための関数です。オブジェクトに直し、本日の日付かどうかを判定します。task4mail,tasks受け取ったメール本文の辞書から、正規表現を使用して、種類別と件数別に分けます。最後まで回るようにしていきます。main.pyを実行します。するとスプレッドシートが更新されSlackで指定したチャンネルにきちんと投稿されています。いかがだったでしょうか?実は、まだまだコードに無駄が多いなぁと思っている箇所もあり、もっとスマートにできたらいいなと思っています。事務経験を経て、2016年9月よりAI研究所に入所。AIセミナー責任者、講師。AIについての幅広い知識を持ち、人に分かりやすく伝える技術を持つ。AIを事業や仕事に取り入れる方法について日々講義しています。RESERVED.ご希望のコースを選択してください。自分でコースを自由にカスタマイズする。