毎月届く請求メールを見ながら、請求元と金額を表へ打ち直している。この記事は経理の担当者に向けて、本文に請求内容が書かれたメールを AI に読ませ、人が確認してから Google スプレッドシートへ入れる手順を説明します。
結論
Samurai App のワークフローを次の 4 つのつながりで作ります。
- Gmail の受信で起動する
- 「AI で生成」で本文から請求元や金額を取り出す
- 「承認・入力を待つ」で人が値を確認する
- 「外部サービス実行」で表に 1 行追記する
- できること: 本文に請求内容が書かれたメールの読み取りと、確認後の追記
- できないこと: この手順での PDF 添付の読み取り。起動で届くのは添付の一覧で、ファイルの中身ではありません
- できないこと: 読み取りの正しさの保証。金額を扱うので、確認のステップを外さないことをおすすめします
できること・できないこと
読み取りは間違えます。 税込と税抜、請求額と前月繰越など、似た数字が並ぶメールでは取り違えが起こりえます。そのため、人が確認するステップを追記の前に置きます。
メールの指示で勝手に操作されません。 「AI で生成」はツールを持たず、1 回答えるだけのステップです。本文に指示のような文が書かれていても、メールや表を操作できません。
PDF で届く請求書は、この記事の手順の対象外です。 実際のアカウントで通して確認していないため、手順に書いていません。Excel や CSV の添付は、「ファイルの加工」の「台帳(行を追加)」という別の道があります。
RAW を使います。 表への追記の valueInputOption は 2 種類あります。RAW は入れた値のまま残り、USER_ENTERED は画面で打ったときと同じように解釈されて、文字が数値や日付に変わることがあります。
同じメールを見分ける機能はありません。 追記は末尾に足すだけです。同じ請求書の再送が来れば 2 行入るので、請求番号の列で確認できるようにしておきます。
用意するもの
- Gmail のアカウントと Google スプレッドシートの表。1 行目に見出しを入れておきます
- Samurai App の「コネクタ」での Gmail と Google Sheets の接続
- ワークフローにサービス連携を付けられる権限(マネージャー以上)
手順
1. 表と接続を用意する
スプレッドシートに 請求元 請求番号 請求日 支払期日 合計金額 の見出しを作ります。URL の /d/ と /edit の間が spreadsheetId です。
「コネクタ」の画面で Gmail と Google Sheets を「追加」し、自分のアカウントで連携します。コネクタの追加は管理者とマネージャーの操作です。
2. 本文から値を取り出す
ワークフローを「新規作成」で作り、「ワークフローの入力」に名前 event、種類「項目の組」を足します。
「考える」の「AI で生成」を足し、「指示」に次のように書きます。
次のメールは請求の連絡です。本文に書かれた値だけを取り出してください。
本文に無い項目は空の文字にし、推測で埋めないでください。
{{input.event.message_text}}
「出力の項目」に vendor(請求元)、invoice_no(請求番号)、invoice_date(請求日)、due_date(支払期日)、total(合計金額)を、すべて型は文字、「必須」で足します。
3. 人が確認するステップを置く
「止める・待つ」の「承認・入力を待つ」を足します。「メッセージ」に手順 2 の値を「/」か「変数」で並べ、メールと見比べられるように件名も入れます。
このステップは、起動した人の「受信トレイ」に承認待ちとして届きます。トリガーの実行では、トリガーを作った人です。担当を別にするなら、「承認者」で最大 5 名を選ぶとメールで依頼が届きます。
- 値が正しければ「承認」を押します。次のステップへ進みます
- 間違っていれば「却下」を押します。実行はそこで止まり、表には入りません。正しい値は表に手で入れます
待つ上限の既定は 7 日で、超えると実行は失敗します。
4. 表に追記するステップを置く
「つなぐ」の「外部サービス実行」を足して GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND を選びます。
| 名前 | 値 |
|---|---|
spreadsheetId |
手順 1 の ID |
range |
シート1!A:E のようなシート名と列の範囲 |
valueInputOption |
RAW |
values |
手順 2 の 5 つの値 |
values は 2 次元の配列で、外側が行、内側が列です。1 行ぶんを作り、見出しの順に値を「/」で選びます。
このステップは無人の実行で動く書き込みです。既定なら承認カードを出さずに実行され、承認の記録に残ります。管理者がこの操作を「毎回確認」か「禁止」にしていると断られます。
5. 公開して起動を付ける
「保存」し、「バージョン」タブの「バージョン N を公開」を押します。「トリガー」タブの「サービス連携を追加」で Gmail の接続を選び、「どうなったら動かすか」で「New Gmail Message Received Trigger」を選びます。「絞り込み」の query には、請求メールだけに当たる条件を入れます。
from:billing@example.com subject:請求書
絞らないと、受信したメールの数だけ AI の読み取りと確認の依頼が発生するうえ、1 件ごとに約 0.5 円かかります。Gmail の起動は最大 15 分遅れます。
動かないとき
- 値がすべて空で届く: 請求内容が PDF にあり、本文に無いメールです。この場合は「却下」して手で入れます。同じ差出人が続くなら、この道は合いません
message_textが無いと出て失敗する: 本文の項目が届かなかったメールです。届く項目はすべて任意の扱いなので、「最近の実行」で入力を確認します- 追記のステップが失敗する:
rangeのシート名とspreadsheetIdを確認して直し、公開し直します。失敗した分は表に手で入れます。設定の間違いではなく一時的な失敗なら、実行の画面の「失敗したステップからやり直す」で、取り出しと確認を繰り返さずに続けられます - 確認の依頼に気づかず失敗している: 7 日を超えた実行は失敗します。担当を決めて「承認者」で指定します
よくある質問
確認のステップを外して全自動にできますか
ステップを外せば動きますが、読み取り間違いがそのまま表に入ります。金額を扱う表では残すことをおすすめします。
仕訳や会計ソフトへの登録までできますか
この記事で説明しているのは表への追記までです。
種類の違うメールが混ざるときはどうしますか
「流れ」の「カテゴリ分類」を「AI で生成」の前に置き、請求とそれ以外に分けます。「それ以外」には何もつながなければ、表に入りません。