役割: GAS 各処理(RPA 起票・仕訳エンジン・データマート・外部 I/F)のエラー条件・挙動・ユーザー通知文言を集約する正典。元は SUMMARY.md §7 に集約されていたが、ERP 製品ドキュメントの整理(コーポレート社内サイト化・段階 2)に伴い本 doc へ移設した。
対象読者: 開発者・運用担当。通知文言(絵文字付きメッセージ)は実装と同期させること。
1. RPA 起票時のエラー
| エラー条件 | 挙動 | ユーザー通知 |
|---|
| 入力シートが見つからない | 処理中断 | 🚨 {シート名}が見つかりません |
| 必須ヘッダー列が不足 | 処理中断 | ⚠️ 必須項目が見つかりません |
| 有効フラグ = FALSE | 行スキップ | なし(正常動作) |
| ステータス = "解約済" | 行スキップ | なし |
| 開始年月が空 / 期間外 | 行スキップ | なし |
| 重複チェック合致 (isDuplicate_) | 行スキップ | なし(冪等性による正常動作) |
| YYYY-MM形式不正(手入力時) | 処理中断 | ⚠️ YYYY-MM の形式で入力してください |
| 関数内の予期しないエラー | catch→ログ記録 | 🚨 {関数名}でエラーが発生しました: {メッセージ} |
| 正常完了(件数あり) | — | 🎉 {種別}起票完了: X件のINV行を生成しました |
| 正常完了(対象なし) | — | ✅ 起票対象なし |
2. 仕訳エンジン (Action A/B) のエラー
| エラー条件 | 挙動 | ユーザー通知 |
|---|
| 必要シートが見つからない | 処理中断 | 🚨 WRK_INVC または TRN_JOUR シートが見つかりません |
| 有効フラグ = FALSE | 行スキップ | なし |
| ステータス ≠ "承認済" / JNL_ID既存 | 行スキップ | なし |
| 発生日が空 | 行スキップ | なし |
| 決済日 > 本日 | 行スキップ | 集計後に ⚠️ 日付不正でスキップしたSTL (X件) |
| 決済日 < INV発生日(前払い以外) | 行スキップ | 集計後に ⚠️ ダイアログ警告 |
| 消込対象INVが見つからない | 行スキップ | コンソール警告 |
| 関数内の予期しないエラー | catch→ログ記録 | 🚨 {関数名}でエラーが発生しました |
| Action A 正常完了 | — | 🎉 X件のINV承認を仕訳台帳へ転記しました |
| Action B 正常完了 | — | 🎉 X件のSTL消込を仕訳に転記しました |
3. データマート更新時のエラー
| エラー条件 | 挙動 | ユーザー通知 |
|---|
| 科目マスタに未登録の科目名 | 処理中断 | 🚨 科目マスタに未登録の科目名です: 「{科目名}」を登録してください |
| 必要シートが見つからない | 処理中断 | 🚨 必要なシートが見つかりません。DDLを実行してください |
| 金額 = 0 の行 | 行スキップ | なし |
| 出力シートの挿入失敗 | 無視して続行 | なし(サイレント) |
| 正常完了 | — | 🎉 マート更新完了 |
科目マスタ未登録のエラーは監査リスク回避のため処理中断(キーワード推測による自動分類は禁止)。
4. 外部インターフェースのエラー
| エラー条件 | 挙動 | ユーザー通知 |
|---|
| GEMINI_API_KEY 未設定 | 処理中断 | 🚨 スクリプトプロパティにGEMINI_API_KEYを設定してください |
| Gemini API HTTP 503 | 5秒間隔で最大3回リトライ→失敗で中断 | 🚨 エラーメッセージ |
| Gemini レスポンスのJSON不正 | 括弧閉じ修復を試行→失敗で中断 | エラーログ |
| PDFフォルダが見つからない | 処理中断 | 🚨 フォルダが見つかりません |
| カードシート/領収書シートなし | 処理中断 | 🚨 {タブ名}が見つかりません |
| カード明細の訂正サイン = "取消" | 行スキップ + シートに SKIP:取消 | なし |
| マッチング金額差 > 20% | マッチ候補から除外 | なし |
| clasp認証切れ | デプロイ失敗 | ユーザーが clasp login --creds creds.json を実行 |
5. ユーザー通知方式
| 方式 | 用途 | 実装 |
|---|
| UIアラート (ui.alert) | 致命的エラー / 処理結果サマリー | 🚨 🎉 ✅ ⚠️ 絵文字付きダイアログ |
| トースト (toast) | 処理完了の簡易通知 | 画面右下に数秒表示 |
| シート内表示 | マッチング結果・スキップ理由 | 処理結果列に MATCHED SKIP:取消 等を書込 |
| コンソールログ | デバッグ用 | Utils.logInfo / Utils.logError / console.warn |