みなさん、こんにちは!
藤井貴司です。
第1回で作った「動作確認」エージェントは上手く動いていますか?
これが動くと言う事は、AIを使わないエージェントは動くと言う事ですね。
今日のゴール
今回は小口現金の現金有高と帳簿残高の「前日に差異があれば通知する」エージェントを作りたいと思います。
完全に小口現金管理をイメージしています。
理由は、以下のnote記事を読んでみてください。
note第3回のURL
エージェントの内容は、
- Starterは、毎日8時になったら
- スプレッドシートから「前日で差異がある行」を取得し
- 前日で差異があれば、
- チャットで通知する
これで行きましょう。
前準備: Googleスプレッドシートを準備する
エージェントを動かすトリガーとなるGoogleスプレッドシートを準備しましょう。

ファイル名、シート名は好きな名前にしても大丈夫です。
僕は、
- ファイル名: 小口現金管理
- シート名: 金種表
にしました。
また、エージェントの動きには関係あませんが、以下の設定を追加しています。
- A列:表示形式→数字→日付
- K~M列:表示形式→数字→通貨(端数切捨て)
M2セルには以下の数式を入力しています。
=ARRAYFORMULA(if(K2:K="","",K2:K-L2:L))
N2セルには以下の数式を
=ARRAYFORMULA(if(A2:A="","",if(A2:A=today()-1,"Yes","No")))
そして、O2セルには以下の数式を入力しています。
=ARRAYFORMULA(if(A2:A="","",if(M2:M=0,"No","Yes")))
ARRAYFORMULA関数については以下の記事を見てもらうと分かると思います。
ほんとは、N列の昨日かどうかとO列の差異があるかどうかの列は作りたくないのですが、これを作らないと望む形のエージェントが作れなかったので仕方ありません。
今の僕のGoogle Workspace Studioの理解度では、これが仕組み上出来ないのか、僕が知らないだけかすら分からないので。
数行分の日付と現金有高、帳簿残高には適当に入力しておくと後の工程がスムーズに進みますよ。
Step0: エージェントを作る
それでは、「前日に差異があれば通知する」エージェントを作りましょう。

エージェント名は好きに付けてもらって構いません。
Step1: Starterを指定する
今回のエージェントを動かすきっかけは「毎日8時になったら」なので、「On a schedule」を使います。

- Start date and time
- Date: 開始日
- Time: 8:00am
- Repeat: Daily
- Ends: Never
Step2: スプレッドシートから「前日で差異がある行」を取得
ActionsはSheetsの中から「Get sheet contents」を選びます。
これは、指定したスプレッドシートの内容を取得できるActionsです。
以下のように設定してください。

- Spreadsheet: Googleスプレッドシートを準備するで作ったスプレッドシート
- Sheet:Googleスプレッドシートを準備するで作ったシート
ここまでは簡単ですね。
次の「Find rows to get values from」で取得する行の条件を指定します。
前日で差異がある行を取得したいので、昨日かどうかの列の中からYes、かつ、差異があるかどうかの列の中からYesの行を取得するには、画像のような設定になります。
Step3: 前日で差異があれば
前日で差異があればと言うことは、一つ前のActionsで取得したものがある場合は、と言い換えることができます。
あるなら次のActionsへ、無ければ何もしないとしたいので、条件分岐を使います。
Google Workspace Studioで条件分岐を使うには、「Check if」を使いましょう。

ifの後が隠れてしまっているので、全部を書き出すと、
「if Step 2: Number of matching rows is not 0」となります。
意味は「Step2で取得した行数が0じゃないなら」と言った感じでしょうか?
なんかややこしい言い方になりましたが、「前日で差異があれば」はこう指定することになります。
Step4: チャットで通知する
これは第1回でも使った「Notify me in chat」でいいですね。
ですが、チャット文に「いつ、いくらの差異があったか」と「そのスプレッドシートへのリンク」を入れて送信したいので、変数(Variables)を使ってみたいと思います。

赤枠で囲った部分が変数(Variables)になります。
「+ Variables」をクリックすると、

「From previous steps(前のステップから)」とStep1とStep2が表示されます。
Step 2:Get sheet contentsをクリックしてください。

Step2で取得したものの中からどれを変数として扱うかをこの中から選ぶことになります。
この中で「Matching values “日付”」から「Matching values “差異があるかどうか”」までは、スプレッドシートの列の値になるので変わることがある部分。
そして、「Spreadsheet Name」から「Number of matching rows」までは変わることがない部分になります。
今回はこの中から、
- 「Matching values “日付”」
- 「Matching values “過不足”」
- 「Spreadsheet link」
をチャットで通知することにしました。
他のものはどんな感じになるのか、いろいろ試してみてください。
テスト実行
ここまでの設定が終われば、テスト実行で確認してみましょう。

この画像のような感じで通知が届いたはずです。
差異を0にすると、通知が届かないことも確認してくださいね。
まとめ
いかがでしょうか?
Google Apps Script(GAS)でも同じことは出来ますし、より高度なことも出来るはずです。
ですが、そのためにはプログラミング知識が必要になりますよね?
Google Workspace Studioならそこまで高度なことは出来ないが、それでも日々の業務を楽にすることがプログラミング知識なしでも出来るようになりそうです。
これからもいろいろ試したものを紹介していくので、楽しみにしていてください。


