Media > AI活用ユースケース > 経営企画 > 各部門の月次報告に書かれたリスク・懸念の記述を拾って種類と影響の大きさで分類し、全社のリスク一覧の更新案と前月からの変化を経営企画にまとめる

各部門の月次報告に書かれたリスク・懸念の記述を拾って種類と影響の大きさで分類し、全社のリスク一覧の更新案と前月からの変化を経営企画にまとめる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

各部門の月次報告の「リスク・懸念」の欄を読み、記述を1件ずつ種類と影響の大きさに分類して、全社のリスク一覧の既存の行と結び付けます。経営企画には、一覧の更新案と前月からの変化が届きます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate/Python
対象業界
IT・SaaS/その他/商社/製造
対象部門
経営企画/総務
対象業務
分類・仕分け/台帳・マスタ管理
主な課題
データ分析に時間がかかる/判断に時間がかかる/属人化している
AIで行う処理
分類
主な効果
判断支援/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
10h/月
AI導入後
3h/月
想定削減
70%
年間削減
84h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 経営企画が、部門ごとのフォルダから前の月の月次報告を開く
  2. リスク・懸念の欄を読み、記述を1件ずつ一覧の作業用のシートに書き写す
  3. 記述ごとに、一覧のどの行の話かを探す。無ければ新しい行の候補にする
  4. 種類と影響の大きさを付け、既存の行と比べて変わったかを見る
  5. 先月の報告と見比べ、今月書かれなくなった懸念を探す
  6. 変化のあった行と新しい候補を、リスク管理委員会の資料にまとめる
導入後(After)
  1. 人各部門が、今までどおり7日までに月次報告を部門のフォルダに提出する
  2. 自動毎月8日の朝、Apps Script が20部門のフォルダから前の月の報告を探し、未提出を拾う
  3. 自動報告ごとに「リスク・懸念」の見出しの下の段落を取り出す
  4. 自動部門ごとに、その部門が主管の行と全社共通の行を一覧から選び、記述とあわせて Gemini API に渡す
  5. 自動Gemini API が、記述を1件ずつに分け、種類・影響・既存の行との結び付き・根拠の文を JSON で返す
  6. 自動根拠の文が報告の本文に本当にあるかを確かめ、前の月の結び付きと比べて変化を規則で出す
  7. 自動更新案のシートに書き、経営企画に知らせる
  8. 人経営企画が、更新案を確かめて承認の列に印を付け、迷う行は部門に聞く
  9. 自動承認された行だけを、メニューの実行で全社のリスク一覧に反映する
各工程の詳しい説明を読む
  1. 経営企画が、部門ごとのフォルダから前の月の月次報告を開く
  2. リスク・懸念の欄を読み、記述を1件ずつ一覧の作業用のシートに書き写す
  3. 記述ごとに、一覧のどの行の話かを探す。無ければ新しい行の候補にする
  4. 種類と影響の大きさを付け、既存の行と比べて変わったかを見る
  5. 先月の報告と見比べ、今月書かれなくなった懸念を探す
  6. 変化のあった行と新しい候補を、リスク管理委員会の資料にまとめる

(a)書き写すだけで時間がかかる。 20部門の報告を開いて、欄を探し、記述を写すだけで、1部門10分ほどかかります。 記述が多い部門では、どこからどこまでが1件かを決めるのにも迷います。

(b)種類と影響の付け方が担当者で違う。 「主要な仕入先の値上げ通知」を、ある担当者は「取引先・調達」、別の担当者は「財務」に入れます。影響の大きさも、「大」の目安が人の頭の中にあるだけです。 担当者が替わると、同じ種類の懸念の件数が月によって跳ねます。

(c)既存の行との結び付けが漏れる。 120行の一覧から近い行を探すのは手間がかかり、似た行が見つからないと新しい行として足してしまいます。 同じ懸念が別の名前で2行、3行と増えていきます。

(d)書かれなくなった懸念に気づかない。 先月の報告と並べて見るのは手間がかかるので、忙しい月には5番目が省かれます。 一覧の状態は「監視中」のまま、部門の側ではもう誰も気にしていない、という行が残ります。

  1. 【人】 各部門が、今までどおり7日までに月次報告を部門のフォルダに提出する
  2. 【自動】 毎月8日の朝、Apps Script が20部門のフォルダから前の月の報告を探し、未提出を拾う
  3. 【自動】 報告ごとに「リスク・懸念」の見出しの下の段落を取り出す
  4. 【自動】 部門ごとに、その部門が主管の行と全社共通の行を一覧から選び、記述とあわせて Gemini API に渡す
  5. 【自動】 Gemini API が、記述を1件ずつに分け、種類・影響・既存の行との結び付き・根拠の文を JSON で返す
  6. 【自動】 根拠の文が報告の本文に本当にあるかを確かめ、前の月の結び付きと比べて変化を規則で出す
  7. 【自動】 更新案のシートに書き、経営企画に知らせる
  8. 【人】 経営企画が、更新案を確かめて承認の列に印を付け、迷う行は部門に聞く
  9. 【自動】 承認された行だけを、メニューの実行で全社のリスク一覧に反映する

8番目が、この設計の分かれ目です。 AIが返すのは分類と結び付きの「案」で、一覧に入るのは承認した行だけです。 承認されない案は更新案のシートに残り、一覧は変わりません。

6番目を規則で行うのは、変化が比べるだけで決まるからです。 先月は結び付いていた行が今月は無い、影響の案が先月より上がった、という変化は、2か月分の結び付きを並べれば機械的に出ます。

02今回想定するシステム構成

構成図
各部門の月次報告(Google ドキュメント、部門ごとのフォルダ)
   │  毎月7日までに提出
   ▼【トリガー】毎月8日 7時台(時間主導型)
Google Apps Script
   ├──▶ 部門のフォルダから前の月の報告を探す(未提出を拾う)
   ├──▶ 「リスク・懸念」の見出しの下の段落を取り出す
   ├──▶ Gemini API(構造化出力)
   │       記述 → 1件ずつの種類・影響・既存の行・根拠の文
   ├──▶ 根拠の文の照合と、前の月との比較(規則)
   ├──▶ 更新案のシートに書く
   └──▶ MailApp で経営企画に知らせる
   ▼
【経営企画が承認の印を付け、迷う行は部門に聞く】
   ▼
承認された行だけを全社のリスク一覧に反映 → リスク管理委員会の資料へ
役割想定する製品代替候補
実行環境Google Apps ScriptPower Automate、Make、Python
生成AIGemini API(構造化出力。有料の枠で使う)Claude API、OpenAI API
保管Google スプレッドシート(全社のリスク一覧、更新案、種類と影響の目安)とドライブ(月次報告)-
通知Gmail(MailApp)Google Chat

新しく足すのは、Apps Script と、更新案のシート、種類と影響の目安のシートだけです。 月次報告の様式と提出のフォルダは、いまのものを使います。様式の見出しの文字だけは変えないよう、各部門に頼みます。 スクリプトは見出しの文字で欄を探すからです。

Apps Script は、全社のリスク一覧のスプレッドシートに付けるスクリプトとして書きます。 報告の読み込みには、ドライブのフォルダの getFiles()(フォルダ直下のファイルを取る)と、ドキュメントの本文の getParagraphs()(段落とリストの項目を取る)、段落の getHeading()(見出しの種類を取る)を使います。見出しの段落を見つけ、次の見出しまでの段落を集めれば、欄の中身だけが取れます。

インストール型のトリガーは作った人のアカウントで動くと公式のページにあります。部門のフォルダを読める、経営企画の共有のアカウントで作ります。

AIの処理は Gemini API の構造化出力で行います。 公式のページでは、/v1beta/interactions に送る要求の response_format に mime_type: "application/json" と schema を指定すると、スキーマに沿った JSON が返るとされ、enum と required が使えます。利用規約では、無料の枠では人が入力と出力を読むことがあり、有料の枠ではプロンプトと応答を製品の改善に使わないとされています。 リスクの記述には、まだ公表していない事故や紛争が書かれます。有料の枠で使います。

03どうやって実装するのか

Step1

処理の起点を決める

処理は、毎月8日の7時台に動く時間主導型のトリガーを起点にします。 ScriptApp.newTrigger() に timeBased()・onMonthDay(8)・atHour(7) を続けて作ります。公式のページでは、時刻は少しずれることがあり、9時に設定すると9時から10時のあいだで選ばれ、その時刻が保たれるとされています。経営企画の始業までに更新案ができていれば足ります。

8日にするのは、7日の提出の締めを待つためです。 7日が土日に当たる月も、提出の締めは変えず、8日に動かします。遅れて出た報告は、経営企画がメニューから「この部門だけ再処理」を実行して足します。 再処理ではその部門の更新案だけを書き換え、ほかの部門の承認の印は触りません。

未提出の部門は、8日の時点で一覧の最初に出します。 未提出は経営企画が部門に催促します。スクリプトから部門に催促のメールは送りません。催促は人の関係の話で、毎月同じ文面が届くと読まれなくなるからです。

Step2

入力データを集める

データ中身取得元
月次報告部門、対象の月、「リスク・懸念」の見出しの下の段落部門ごとのフォルダのドキュメント
全社のリスク一覧番号、名称、種類、主管の部門、影響、発生の見込み、状態、最終の更新月リスク一覧のシート
前の月の結び付き部門、記述の番号、結び付けた一覧の番号、影響の案、承認の結果更新案のシートの前の月のタブ
種類の語彙10の種類と、それぞれの説明と例目安のシート
影響の目安大・中・小それぞれの目安(金額、顧客、法令、業務の停止の長さ)目安のシート

質を決めるのは、いちばん下の2つです。 種類の説明と影響の目安が書かれていなければ、AIの分類は担当者の頭の中と同じく揺れます。目安は、経営企画が過去の一覧の付け方を見直して文にします。 たとえば影響の「大」を「売上の1%以上、主要顧客の取引停止、許認可に関わる法令違反、1日以上の基幹業務の停止のいずれか」のように書きます。

一覧から渡すのは、その部門が主管の行と、全社共通の行だけです。 120行を全部渡すと、AIは似た名前の別の部門の行に結び付けがちです。部門をまたぐ懸念は全社共通の行に結び付くように、一覧の側で共通の行を決めておきます。

Step3

データの取得方法を決める

取るものどこからどう取るか
前の月の報告部門のフォルダgetFiles() で取り、ファイル名の年月で前の月のものを選ぶ
リスク・懸念の欄報告の本文getParagraphs() を順に見て、getHeading() が見出しで文字が「リスク・懸念」の段落の次から、次の見出しの手前まで
一覧・目安・前の月各シートgetValues() でまとめて読む

処理は、次の順で行います。

1. 20部門のフォルダから、ファイル名が「月次報告_YYYYMM_部門名」の前の月のものを探す
2. 無ければ未提出として一覧に載せる(AIは呼ばない)
3. 本文の段落を見て、リスク・懸念の欄の段落を集める
4. 欄が見つからなければ「様式の見出しが違う」として載せる(AIは呼ばない)
5. 欄の文が「特になし」「該当なし」だけなら、記述0件として扱う(AIは呼ばない)
6. 段落ごとに番号を振る(P-03-01 など)
7. 部門ごとに Gemini API を呼び、JSON を受け取る
8. 根拠の文が欄の本文に含まれるかを文字列で確かめる
9. 前の月の結び付きと比べ、変化を規則で決める
10. 更新案のシートに書き、経営企画に知らせる

9番目の変化は、次の5つに決めます。

変化規則
新規の候補結び付く既存の行が無い(AIが new を返した)
継続前の月も今月も同じ行に結び付き、影響の案が同じ
影響の案が上がった・下がった同じ行に結び付き、影響の案が前の月と違う
記述が消えた前の月は結び付いていた行に、今月は結び付く記述が無い
解消の記述あり記述に解消・完了の旨があり、AIが resolved_stated を返した

「記述が消えた」と「解消の記述あり」を分けるのが、第1章で書いた区別です。 前者は部門に確かめる項目、後者は経営企画が状態を「解消」にするかを決める項目です。記述が消えただけで状態を変えることはしません。

Step4

AIへ渡す前に整形する

  1. 欄の外を渡さない … 業績や活動の段落は渡しません。売上の数字や取引先の名前が、リスクの記述と混ざらないようにします
  2. 段落に番号を振る … AIには根拠をこの番号と、段落の中の文の写しで返させます
  3. 個人の名前を伏せる … 欄の中に社員や取引先の担当者の名前があれば、部門の一覧と取引先の一覧の名前で「社員」「先方の担当者」に置き換えます
  4. 前の月の結び付きを添える … 前の月にこの部門の記述が結び付いた一覧の番号と名称を添えます。AIは「先月からの続き」を見分けやすくなります
  5. 長すぎる欄を分ける … 欄が数千字を超える部門は、段落の区切りで2回に分けて呼びます

3番目は、リスクの記述に人の事情が書かれることがあるからです。 「担当者の退職で引き継ぎが滞る」のような記述は、リスクとしては「人材・労務」の話で、誰が辞めるかはリスク一覧に要りません。

Step5

AIに処理させる

させるのは、欄の記述を1件ずつのリスクに分け、それぞれを種類と影響の大きさに分類し、既存の行への結び付きを返すことです。

見るものさせること例
1つの段落に複数の懸念1件ずつに分ける「仕入先A社の値上げと、物流費の上昇」→ 2件
懸念の中身種類の語彙から1つ選ぶ仕入先の値上げ → supply_chain
書かれた規模・範囲影響の目安に当てはめる「主要顧客3社の納期に影響」→ high の案
既存の行との近さ結び付く行の番号か new「基幹システムの保守期限」→ R-041
解消・完了の旨記述に書かれていれば印を付ける「代替の仕入先の認定が完了」→ resolved_stated

種類は、経営企画が決めた10の語彙から選ばせます。 法令・コンプライアンス、情報セキュリティ、人材・労務、取引先・調達、品質・製品、財務・為替、システム障害、災害・事業継続、評判・顧客、その他です。語彙を固定すると、第3章の(b)で書いた「同じ懸念が担当者で別の種類になる」揺れが消えます。

させないこと理由
影響の大きさの確定経営企画とリスク管理委員会が決める
一覧の状態の変更承認した行だけを人が反映する
記述が無いことを解消と読む書き忘れと区別できない
対応策の提案主管の部門が決める
記述に無い規模を推し量る影響の案が根拠を失う

5行目が、この構成でいちばん守るべきことです。 「為替の動きが気になる」とだけ書かれた記述を渡すと、AIは一般論から「影響は大きい」と書きがちです。記述に規模や範囲の手がかりが無ければ、影響の案は unknown にさせます。 経営企画は unknown の記述を部門に聞き返し、次の月から書き方をそろえてもらいます。

Step6

指示内容を固定する

あなたは会社の経営企画部で、部門の月次報告のリスク・懸念の記述を、
全社のリスク一覧に照らして仕分ける担当です。
リスクの評価を確定する立場ではありません。仕分けの「案」を出します。

【入力】
- 部門名、対象の月
- リスク・懸念の欄の段落(paragraph_id 付き)
- この部門が主管の一覧の行と、全社共通の行(番号・名称・種類・説明)
- 前の月にこの部門の記述が結び付いた行の番号と名称
- 種類の語彙(10個)と、影響の目安(high / medium / low の説明)

【してほしいこと】
1. 段落の中の懸念を1件ずつに分ける(1つの段落に複数あれば分ける)
2. 各件に、種類の語彙から1つを選ぶ
3. 各件に、影響の目安に照らして high / medium / low / unknown を選ぶ
4. 各件に、結び付く一覧の行の番号を1つ選ぶ。無ければ new、
   2つ以上の行に同じくらい近ければ unclear とし、候補の番号を並べる
5. 記述に解消・完了の旨が書かれていれば resolved_stated を true にする
6. 各件に、根拠の paragraph_id と、根拠にした文をそのまま写す

【厳守事項】
- 影響の目安に当てはめる手がかり(金額、顧客、法令、停止の長さ)が
  記述に無ければ、impact を unknown にしてください。推し量らないでください。
- 根拠の文は、段落の文字をそのまま写してください。言い換えないでください。
- 前の月にあった行が今月の記述に無いことについて、何も書かないでください。
  それは別の仕組みで扱います。
- 対応策や優先順位を書かないでください。
- 個人を特定できる記述を書かないでください。

【部門の記述】{paragraphs_json}
【一覧の行】{register_rows}
【語彙と目安】{vocab}

「根拠の文をそのまま写す」は、第7章のデータの取得方法の8番目のための指示です。 写した文が欄の本文に含まれているかを文字列で確かめるので、言い換えられると照合に落ちます。 落ちた件は、AIが記述に無いことを書いた疑いとして経営企画に回ります。

「前の月にあった行が今月無いことについて書かない」は、役割を分けるための指示です。 前の月の結び付きを渡しているので、AIは「R-041 は今月言及が無く、解消したと考えられる」と書きたくなります。それは規則の「記述が消えた」の仕事で、解消かどうかは部門に聞くまで分かりません。

Step7

出力形式を固定する

構造化出力で、次の形の JSON を受け取ります。

{
  "department": "",
  "month": "",
  "items": [
    { "item_no": 1,
      "summary": "",
      "category": "compliance | infosec | people | supply_chain | quality | finance | system | bcp | reputation | other",
      "impact": "high | medium | low | unknown",
      "match": "existing | new | unclear",
      "register_ids": [""],
      "resolved_stated": false,
      "evidence": { "paragraph_id": "", "quote": "" } }
  ]
}

スキーマでは category・impact・match を enum で縛り、evidence を required にします。quote が欄の本文に含まれない件は、更新案に「根拠の照合に失敗」と出し、承認できない状態にします。

理由の1つ目は、分類と変化を別の層に置けることです。 AIの JSON は今月の記述の分類だけで、前の月との比較は規則が更新案のシートの列で出します。 AIの答えが月によって揺れても、変化の判定の仕方は変わりません。

2つ目は、unclear で迷いを残せることです。 近い行が2つあるときに1つを選ばせると、外れたときに気づけません。候補を並べて返させ、経営企画が選びます。 選んだ結果を、次の月の前の月の結び付きとして渡します。

3つ目は、impact を案として持てることです。 一覧の影響の列は人が決めた値のままにし、更新案のシートに「AIの案」「一覧の値」を並べます。差がある行だけを見れば、見直すべき行が分かります。

経営企画に届く知らせは、更新案のシートの要点です。

【9月分 リスク・懸念の仕分け(20部門中19部門提出/未提出:海外営業部)】
■ 新規の候補 3件
  調達部「主要部品の仕入先1社が値上げを通知。代替先は未認定」
    → 取引先・調達/影響の案 medium/根拠 P-07-02
■ 影響の案が上がった 2件
  R-041 基幹システムの保守期限(情報システム部)low → medium
■ 記述が消えた 4件(部門に確認してください)
  R-018 物流費の上昇(物流部):8月まで記述あり、9月は記述なし
■ unclear 1件/根拠の照合に失敗 0件/影響 unknown 5件
Step8

システムへ連携する

つなぎ先方式内容
部門のフォルダDriveApp(読み取り)前の月の月次報告
月次報告の本文DocumentApp(読み取り)リスク・懸念の欄の段落
Gemini APIUrlFetchApp分類と結び付きの JSON
更新案のシートSpreadsheetApp(書き込み)1件ずつの分類、変化、承認の列
全社のリスク一覧SpreadsheetApp(書き込み)承認された行だけ、メニューの実行で反映
GmailMailApp経営企画への知らせ

API キーはスクリプトのプロパティに置き、スクリプトの編集の権限は経営企画の2名に絞ります。 公式の割り当てでは、1回の実行は6分まで、URL Fetch の呼び出しは Google Workspace のアカウントで1日10万回です。部門ごとに1回、月20回ほどの呼び出しです。 6分を超えそうなときは、終わった部門を記録して続きのトリガーで残りを処理します。

月次報告のドキュメントには書き込みません。 部門の報告は部門のものです。一覧への反映も自動では行わず、経営企画がメニューを実行したときに、承認の列に印のある行だけを書きます。

Step9

人が確認する

  1. 未提出と様式の違いを片付ける … 未提出は催促し、見出しの文字が違う報告は様式を直してもらってから再処理します
  2. 根拠の照合に失敗した件を見る … 本文を開き、記述に本当にあるかを確かめます
  3. 新規の候補と unclear を決める … 既存の行に寄せるか、新しい行にするかを決めます
  4. 影響の案が一覧の値と違う行を見る … 一覧の値を変えるかを決めます。変えるときは、根拠の文を委員会の資料に添えます
  5. 記述が消えた行を部門に聞く … 解消したのか、書き忘れか、まだ続いているのかを確かめます
  6. 承認の列に印を付けて反映する

承認しなかった案には、理由を一言残します。 「既存の R-018 に寄せる」「影響は low のまま」のような短い書き込みで足ります。この書き込みが半年分たまると、どの種類で案が外れやすいかが分かり、目安の書き直しの材料になります。

目標は、20部門をならして1部門9分です。 継続の行は流し見るだけ、新規の候補と影響の案の変化は数分、記述が消えた行の聞き取りは部門とのやり取りで十数分です。unknown が多い部門には、影響の目安を添えて書き方を頼みます。

Step10

例外に対処する

起きること対応
報告が未提出一覧の最初に載せ、AIは呼ばない。経営企画が催促する
見出しの文字が違う・欄が無い「様式の見出しが違う」として載せ、部門に直してもらう
「特になし」だけ記述0件。前の月に結び付いていた行は「記述が消えた」として出す
欄が長すぎる段落の区切りで分けて呼ぶ
同じ月の報告が2つあるファイルの更新日時の新しいほうを使い、注記する
Gemini API が応答しない・形が違う一度だけやり直し、だめならその部門を「未処理」として載せる
根拠の文が本文に無い「根拠の照合に失敗」とし、承認できない状態にする
一覧に無い番号が返ったその件を unclear に直し、候補から無い番号を落とす

3行目を省かないでください。 「特になし」の部門を処理から外すだけにすると、先月まで書かれていた懸念が黙って消えます。 第3章の(d)で書いた見落としは、まさにこの形で起きます。

Step11

記録を残す

  • 更新案のシート:月ごとのタブに、部門、記述の番号、要約、種類、影響の案、結び付き、根拠、変化、承認の結果と承認した人
  • 全社のリスク一覧の変更の履歴(いつ、どの行の、どの列を、どの更新案で変えたか)
  • AIに渡した段落の番号と、返った JSON の全文
  • その月に使った種類の語彙と影響の目安の版
  • 未提出と様式の違いの記録

目安の版を残すのは、目安が委員会で変わるからです。 影響の「大」の線を下げた月は、high の案が増えます。版が残っていないと、リスクが増えたのか線を下げただけなのかを説明できません。

04実装レベルの3段階

最小構成:欄の記述を手で AI の画面に貼り、分類と結び付きを出させる / 記述の仕分け
半自動化:上記+Apps Script で報告の読み込み・AIの呼び出し・根拠の照合・前の月との比較・更新案の書き込みまでを月に一度自動で行う / 読み込みから更新案まで
本格構成:上記+種類ごと・部門ごとの推移の表、リスク管理委員会の資料の下書きまでを作る / 委員会の資料の準備まで

最小構成では、読み込みと見比べの時間は減りません。 分類の当たり方を確かめる段階です。 半自動化で1件30分が9分になり、この段階が本記事の想定です。 書き写し(①)は自動になり、種類と影響の付与(②)は案を確かめる作業に、前の月との見比べ(③)は規則の変化を見る作業になります。 本格構成は、目安が半年ほど変わらなくなってから考えます。 推移の表は、分類の物差しがそろっていないと意味を持ちません。最初から委員会の資料の下書きまで作ると、目安が固まらないうちに資料の形が決まり、後から種類を見直すたびに資料の過去の月と比べられなくなります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
20 件
1件あたり現在時間
30 分
1件あたり導入後時間
9 分
現在  20件 × 30分 ÷ 60 = 10 時間/月
導入後 20件 × 9分 ÷ 60 = 3 時間/月
月間削減時間
7h
削減率
70%
年間削減時間
84h
年間金額換算(時間単価4,500円)
38万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 部門が十数から数十あり、各部門が共通の様式の月次報告を Google ドキュメントで提出している会社。月次報告に「リスク・懸念」の欄があるが、経営企画がそれを読んで全社のリスク一覧に写す作業が手作業で、担当者によって種類や影響の付け方が違っている場合。リスク一覧をスプレッドシートで持ち、取締役会やリスク管理委員会に毎月の変化を報告している場合。Google Workspace を使っている場合。
向いていない
  1. 部門が数個で、経営企画が各部門長と直接話してリスクを把握できている場合。月次報告にリスクの欄が無く、記述が業績の説明に紛れている場合。リスク管理の専用のシステムで部門が直接リスクを登録・評価している場合。なお、リスクの評価を確定することと、対応の優先順位を決めることは、この構成では代替できません。

07最小構成で試す方法

  1. 先月の月次報告から、リスク・懸念の欄の記述が多い部門を5つ選ぶ
  2. その5部門の欄の段落と、その部門が主管の一覧の行を書き出す(名前は伏せる)
  3. 有料の枠で契約した Gemini の画面に、種類の語彙と影響の目安とあわせて貼る
  4. 第7章の指示の要点(1件ずつに分ける、根拠の文を写す、規模の手がかりが無ければ unknown)を伝える
  5. 出てきた分類と結び付きを、経営企画が実際に一覧に付けたものと突き合わせる

ここで見るのは、結び付きの当たり方と、unknown の使い方です。 既存の行への結び付きが経営企画の判断と合い、手がかりの無い記述に unknown が付くなら、構成は有効です。

出てきた内容判断
経営企画の結び付きと同じ行が、根拠付きで出たApps Script で報告の読み込みとつなぐ段階に進む
手がかりの無い記述に high や low を付けた指示の書き方で直る。unknown を用意する
種類が経営企画の付け方とばらばらになった種類の説明と例が先。 AIの問題ではない

3行目が出たら、それは目安が頭の中にしか無かったということです。 種類ごとに説明と例を2〜3行ずつ書き足して、同じ5部門で試し直します。

08実装時につまずきやすいポイント

問題対策
記述が消えた懸念を解消と読む規則で「記述が消えた」として出し、部門に聞く
手がかりの無い記述に影響を付けるunknown を用意し、推し量りを禁じる
根拠の文を言い換えて照合に落ちるそのまま写すよう指示し、落ちた件は承認できない状態にする
似た行に誤って結び付ける主管の行と全社共通の行だけを渡し、迷えば unclear
同じ懸念が別の名前で増える新規の候補は既存の行に寄せられないかを先に見る
見出しの文字の違いで欄が取れない様式の見出しを固定し、違えば部門に直してもらう
「特になし」の部門を処理から外す記述0件として扱い、前の月の行を「記述が消えた」に出す
一覧が自動で書き換わる承認の列に印のある行だけを、メニューの実行で反映する
社員の名前が更新案に出る渡す前に名前を伏せる

上の2行が、一覧の信用を決めます。 消えた懸念が解消扱いになれば一覧から抜け落ち、手がかりの無い影響の案が並べば委員会の議論がずれます。どちらも、AIに結論を出させない返し方で防ぎます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 部門の月次報告のリスク・懸念の記述(未公表の事故、紛争、取引先の経営不安、人の退職などが書かれることがある)と、全社のリスク一覧です。

  1. 有料の枠で使う … Gemini API の利用規約では、無料の枠では人が入力と出力を読むことがあるとされています。リスクの記述は無料の枠に流しません。 手元の画面で試すときも同じです
  2. 欄の外を渡さない … 業績や取引の数字は分類に要りません
  3. 個人の名前を伏せる … 退職や休職の記述から、誰の話かを読み取れないようにします
  4. 更新案のシートの閲覧を絞る … 全部門の懸念が1か所に集まります。経営企画と委員会の事務局だけが見られる場所に置きます
  5. 評価を確定しない … 影響の大きさと状態は、経営企画と委員会が決めます。AIの案のまま委員会の資料に載せません
  6. API キーの管理 … スクリプトのプロパティに置き、編集の権限を経営企画の2名に絞ります

誤りが起きた場合のリスクは、消えた懸念を見落とすことと、根拠の無い影響の案で優先順位を誤ることの2つです。 前者は「記述が消えた」の規則で、後者は unknown と根拠の照合で防ぎます。どちらも、AIに分類だけを任せ、判断を人と規則の側に置くことで守ります。

10まず何から始めるか

1週目:種類の語彙と影響の目安を文にする

過去半年の一覧の付け方を見直し、10の種類に説明と例を2〜3行ずつ書きます。影響の大・中・小の目安を、金額・顧客・法令・停止の長さで書きます。委員会の事務局で合意してから使います。

2週目:5部門で試す

先月の5部門の記述を、名前を伏せて有料の枠の Gemini の画面に貼り、分類と結び付きを出させます。手がかりの無い記述に影響を付けていないかを最優先で見ます。

3週目:様式の見出しとファイル名を固定する

月次報告の様式の「リスク・懸念」の見出しの文字と、ファイル名の付け方を各部門に頼みます。全社のリスク一覧に、全社共通の行の印を付けます。

4週目:読み込みと前の月との比較までを作る

Apps Script で、未提出の検出、欄の取り出し、段落の番号付け、更新案のシートへの書き込みまでを作ります。この時点ではAIを呼ばず、欄の記述が正しく取れるかを1か月見ます。

2か月目: Gemini API の呼び出し、根拠の照合、前の月との比較を足します。3か月目以降: 承認されなかった案の割合を種類ごとに数え、目安の書き方を見直します。「記述が消えた」行が毎月部門に確かめられ、一覧の更新が委員会の前日までに終わるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-12/最終更新:2026-10-13
確認した内容情報源確認日
インストール型のトリガーが作った人のアカウントで動くこと。時間主導型のトリガーの時刻が9時なら9時から10時のあいだで選ばれ保たれることGoogle Apps Script: Installable Triggers2026-10-12
onMonthDay() で月の日付を、atHour() で時刻を指定できることGoogle Apps Script: Class ClockTriggerBuilder2026-10-12
1回の実行が6分まで、URL Fetch が Google Workspace で1日10万回であることGoogle Apps Script: Quotas for Google Services2026-10-12
getFiles() がフォルダ直下のファイルを取ることGoogle Apps Script: Class Folder2026-10-12
getParagraphs() が段落とリストの項目を取ることGoogle Apps Script: Class Body2026-10-12
getHeading() が段落の見出しの種類を返すことGoogle Apps Script: Class Paragraph2026-10-12
/v1beta/interactions の response_format に mime_type: "application/json" と schema を指定すると JSON で返ること。enum・required が使えることGemini API: Structured output2026-10-12
無料の枠では人が入力と出力を読むことがあり、有料の枠ではプロンプトと応答を製品の改善に使わないことGemini API Additional Terms of Service2026-10-12

種類の語彙と影響の目安は、自社のリスク管理の決めごととして経営企画とリスク管理委員会で決めてください。 本記事は上記の公式のページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1273)についてのご相談はこちらから。

AI活用について相談する
目次