契約書の行方を探せ！～契約書管理自動化への挑戦～文系人間、頑張る

# はじめに

皆様、こんにちは。北の国のやまぴです。
今回、２回目の投稿となりますが、まあ・・・いろいろと大変でした。
前回も自分なりに頑張ってみたけれど、それが今回少しは活かされているんじゃないかな？と感じていただけたら、ありがたいです。

前回の記事が、こちらです。

https://qiita.com/fyuatan64/items/b077c88f51abfd8dc8aa

ほぼ自分の趣味に走って作ったわりには、まだまだ改善の余地ありでございます。

今回は現在自分が携わっている業務→リベート（仕入割戻）契約書の処理進捗状況管理の自動化にチャレンジしました。
それが、こちらでございます。


https://x.com/fyuatan64/status/1933134957247152201

＊Run Once動画を撮りたかったのですが、PCでの操作うまくいかず・・・。

# 作ろうとしたきっかけと思い

私が現在携わる業務で、リベート（仕入割戻）契約書の内容チェック・提出状況管理（いつ商品部から提出され、いつ総務部から返却されるか）という業務があります。

「リベートって何ですか？」普通はあまり聞かない言葉ですよね？
ChatGPT君に聞いてみましょう。

:::note info
リベートって何ですか？
初めて聞く人にもわかりやすく説明してください。
:::
:::note info
💡 リベートとは？
「あとからもらえるお金（返金・報奨金）」のことです。

🔍 もう少し具体的に言うと…
たとえば、あなたがあるお店でたくさんの商品を買ったとします。
すると、そのお店から「ありがとう！たくさん買ってくれたから、一部のお金をあとで返しますね」と言われて、あとから現金や割引などの形でお金が戻ってくることがあります。

この「あとから戻ってくるお金」が「リベート」と呼ばれます

💬 簡単にまとめると？
リベートとは、
「買った後にもらえるご褒美のお金」
のようなものです！
:::

このリベート、会社の利益に非常に影響してまいります。（もちろん、ルール（様々な法律）を守って取引先様と商談して、条件を決めて契約締結するのが当たり前）
**そのリベート契約を取引先様と交わす際に必要なのが、リベート契約書です。**

このリベートに関わるのは商品部・商品戦略部・財務経理部・総務部となっており、各部署の業務は下記のとおりです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/df4691b5-c3e1-4929-a0f1-dd383e1db01e.png)

そして、契約書の処理の流れはこのようになっています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/916f3a10-88a7-42b1-8ebb-3207438d1bb3.png" width=70%>

この中で★マークのついている箇所がありますが、この部分が私がちょっと困っている・悩んでいる部分です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/c672b98a-0eb7-4a9c-8d21-6815390b77cc.png" width=60%>

つまり、「財務経理部に提出された契約書はいつ総務部へ？」「総務部の処理が終わった
契約書が戻ってくるのはいつ？」がわからないのです。私はExcelで作成した管理表を使用して、契約書の進捗管理をしていますが、そこに記載する提出日・返却日は、「私が」提出した日であり、商品部へ返却した日です。万が一途中で契約書が紛失しても、どの時点で紛失したかわからない。
・・そもそも、その管理表を使っているのは商品部と商品戦略部で、財務経理部と総務部はまた別のフォーマット使って管理しているし、それを見ることはできないのです。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/6813ec5d-6f63-4eb5-a31e-76baeade2e92.png" width=60%>

そこで、現在学んでいるデジタルツールを使って、契約書の進捗管理を簡単に、かつ情報共有のできるものを作ろう！　そして進捗管理もできるだけ手間がかからないようにしたい！と考え、作成にとりかかりました。

# 使用したツール

・Make
・ChatGPT
・Googleスプレッドシート
・Gemini

MakeとGoogleスプレッドシートは前回も使用して、特にMakeは自分は使いやすいツールだと思っていたので引き続き使用することにしました。
また、ChatGPTについては、Makeのシナリオ作成の際の手助けをしてもらっています。
（モジュールの選択・モジュール内フィールドの入力について）
合わせて、Geminiも実は使っております。
（ChatGPTのレスポンスが悪い時などに助けてもらいました。）

それでは作成手順の説明をさせていただきます。

# 作成手順のご紹介
## ①スプレッドシートの作成



まず、前回と同様にGoogleスプレッドシートを作成します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/b9e6032f-4537-414e-9d5c-e4afc15c233d.png" width=50%>




契約番号・取引先名・契約期間（開始日・終了日）担当BY（名前はよく見ると(;^_^A）
そして商品部提出日・財務経理部提出日・総務部返却日を入力。
この時点ではいったん提出日・返却日は空欄にし、それそれ通知済みフラグの欄も設けます。

## ②Makeモジュールの作成

モジュールの作成・構成については、ChatGPTに質問して、下記のように回答が来ました。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/f61ebdfb-c4cb-457c-861b-0e5a8be30a03.png" width=60%>


その全体のフローに基づいて、作成したのがこちらです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/c6c0d96b-a862-4d0c-8064-90be2dbcf8e0.png" width=55%>

 Googleスプレッドシートの内容が更新されると、その更新内容がRouterを通して、3つに分岐されます。
 その3つの分岐内容は以下になります。
 
 ①「商品部提出日」更新→「商品部」（正確には商品戦略部）から「財務経理部」へ通知
 ②「財務経理部提出日」更新→「財務経理部」→「総務部」へ通知
 ③「総務部返却日」更新→「総務部」→「商品部（商品戦略部）」へ通知
 
そして、分岐の枠目を行うRouterのFilterの設定がこちらです。（財務経理部→総務部の場合）
 
 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/554dcb57-d585-4710-becc-4275898ec8f0.png" width=55%>
 


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/3d3077a2-03b7-40f6-9b99-a722e9b94af3.png" width=55%>


 ここで、どこにデータを流したらよいかの条件を入れています。
 この場合は財務経理部→総務部へ流したいので、日付が入力されているのか、また通知済みフラグ欄に「済」と入力されているかの条件を入れてます。
 こうすることで、処理の進行状況に合わせて、通知メールの送付先を判断するのです。

 次はOpenAIモジュールです。

 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/bb4909eb-81e2-4259-a473-ff083e8e3140.png" width=55%>
 

 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/fc9e8116-0820-494b-a8d7-533ef077e47d.png" width=55%>

ここでは、通知メールを送付するための設定を行います。
役割をAIに指示し、メールを作成するためのプロンプトを入力します。

ここでも注意しないといけないのは、どこへ通知メールを送付するのかをプロンプトにもしっかり書き込むこと。
また、メール本文のレイアウトが指定しないとText形式で見づらくなってしまうので、HTML形式にするよう指定します。
続いてメールのモジュールです。
最初はGmailモジュールを使用したかったのですが、うまくいかず、Microsoft 365モジュールを使用することにしました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/5461373b-3f28-4c09-990f-f34b11189bec.png" width=55%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/61eae9d6-02e2-4c38-ac42-d54b87d4a518.png" width=55%>

ここではメール本文はBody ContentでOpenAIモジュールより設定します。
そして、発信者・受信者のメールアドレスも設定します。
＊今回はすべて私の持ってる個人のメールアドレスを入力してます。

これでOK・・なんですが、管理表に処理（提出・返却）が完了したことをわかるようにしたい！
ので、ここで「通知済みフラグ」欄が出てきます。
通知メールが送信されたら、通知済みフラグ欄にそれぞれ「済」が入力されるように、
Google Sheetsモジュール・Update a Row を作成・つなげます。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/48b75bba-b580-4140-b480-08751bc2cb0a.png" width=55%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/a449094f-b62f-4f76-804a-524a4597089f.png" width=55%>


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/2b6ff63c-1e93-4b61-bdc6-622b6941bb75.png" width=55%>

日付欄（日付入力済み）の横の通知済みフラグの列のフィールドに「済」を入力。
これでRun Onceを実行したら、通知メールが送付され、「済」が通知済みフラグ欄に入力されます。
Googleスプレッドシートなので自動保存されますから、いちいち上書き保存ボタンを押さなくても大丈夫！

## ③Run Onceしてみると・・・・？ ##

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/5e416c0e-288b-4b7d-95bd-691ea8bfb5ba.png" width=55%>


 こんな風にメールが送付されました！
 ・・なんか文面、よく見ると・・(;^_^A
 

 <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/d1eb3086-d044-4f3a-835d-280d92c36f49.png" width=60%>

表にも「済」が入力されています。

ここに至るまでは、エラーも出たり、メールの送信もうまくいかなかったりでしたが、なんとかかんとか
無事動作するところまでこぎつけました。

スプレッドシートに日付を入力→MakeをRun Once→入力内容を判断→通知メール送付→通知済みフラグ欄に「済」が入力される（実際に運用するとなると、いつ処理するのか設定しておく必要があります。）
この処理、わずか40秒で完了しました！（３契約分の処理です）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073687/ed3d39a9-6f71-4b6a-b722-e7a2aad1af5a.png" width=55%>

# 反省と今後の野望（というか、目標）

正直、今回は前回作ったものをちょっと応用させてみた感じになってしまったのかなと反省してます。
今持ってる自分の知識を総動員＋生成AI（ChatGPT・そしてGemini(;^_^A）に助けてもらいつつ、
Qiitaの記事やnote記事などあれやこれやと検索し、読みながら進めていきました。
実は予想より早くできた（と思っているのは自分だけかも）ので、「次は契約番号を問い合わせて、進捗状況を答えてもらうチャットボットを作ってみよう！」と考え、やりだしたのですが・・途中で白旗上げました。


**わからないことがわからない**

迷路にはまってさあ大変！状態。ChatGPTに聞いて、何度も何度もやりなおしても、消えないエラー。
もう、これは次の挑戦だ！と決めました。
切り替えて、次回、また新たに学ぶデジタルツールの知識を生かして、完成させてやりますよ！
（GASについてちゃんと勉強します・・）
そんな文系人間の私の挑戦は、まだまだ続くのであります。

長文、お付き合いくださいまして、ありがとうございます！