ビルメンテナンス会社の点検員が Google フォームで出す設備点検の結果と写真を集め、記入漏れと基準外の値を拾って、オーナー向けの月次の点検報告書の下書きを作る
点検員がスマートフォンの Google フォームで出す点検の結果と写真を建物ごとに集め、記入漏れと基準外の値を入力の当日に拾います。 月初めには、その月の記録からオーナー向けの点検報告書の下書きを作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- その他/不動産/建設
- 対象部門
- 品質管理
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 生成
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 点検員が建物で点検し、紙や表計算のファイルに結果を書き、写真を撮る
- 点検員が記録と写真を、メールやチャットで業務管理課へ送る
- 月末、担当者が建物ごとに記録を集め、記録表に写す
- 測定値を基準の数値と1つずつ見比べ、外れているものに印を付ける
- 記入漏れや読めない字があれば、点検員に電話で聞く
- ひな形の文書に、点検結果の一覧、基準外の値とその対応、所見を書く
- 写真を選んで貼り、課長が確認してオーナーへ送る
- 人点検員が建物で点検し、スマートフォンの Google フォームに結果と測定値を入れ、写真を添付して送信する
- 自動フォームの送信をきっかけに Apps Script が動き、回答と写真のファイルIDを点検記録のシートに書く
- 自動必須の欄の空き、写真の付いていない「異常あり」の項目、基準の数値から外れた測定値に印を付ける
- 自動記入漏れがあれば、その場で点検員本人へメールで知らせる
- 人点検員が、建物にいるうちに測り直すか、フォームを出し直す
- 自動毎月1日の朝、Apps Script が建物ごとにその月の記録を集め、Claude API に報告書の本文の下書きを書かせる
- 自動下書きと点検結果の一覧、写真を、建物ごとの Google ドキュメントにまとめる
- 人業務管理課の担当者が、基準外の値の対応と所見を確かめて直す
- 人課長が確認し、PDF にしてオーナーへ送る
各工程の詳しい説明を読む
- 点検員が建物で点検し、紙や表計算のファイルに結果を書き、写真を撮る
- 点検員が記録と写真を、メールやチャットで業務管理課へ送る
- 月末、担当者が建物ごとに記録を集め、記録表に写す
- 測定値を基準の数値と1つずつ見比べ、外れているものに印を付ける
- 記入漏れや読めない字があれば、点検員に電話で聞く
- ひな形の文書に、点検結果の一覧、基準外の値とその対応、所見を書く
- 写真を選んで貼り、課長が確認してオーナーへ送る
(a)写し直しに時間を使う。 3番目は、紙と表計算と写真がばらばらに届くので、建物ごと・項目ごとに並べ直す作業です。担当者の時間の半分近くが、内容を考えることではなく写すことに使われています。
(b)記入漏れに気づくのが月末。 5番目で点検員に聞いても、測定値そのものが無ければ測り直すしかありません。月末の時点で測り直せないものは、報告書に「未測定」と書くことになります。 オーナーから理由を聞かれ、点検員の記憶に頼って答えることになります。
(c)基準と見比べるところで見落とす。 測定値は、居室の数 × 項目の数だけあります。二酸化炭素の含有率のように平均で比べる項目と、温度のように測った値で見る項目が混ざっていて、担当者によって印の付け方が違います。
(d)所見の書きぶりが担当者ごとに違う。 同じ「フィルターの汚れ」でも、ある担当者は「清掃を推奨」、別の担当者は「交換時期」と書きます。オーナーが複数の建物を持っていると、報告書を並べたときに書きぶりの違いが目立ちます。
- 【人】 点検員が建物で点検し、スマートフォンの Google フォームに結果と測定値を入れ、写真を添付して送信する
- 【自動】 フォームの送信をきっかけに Apps Script が動き、回答と写真のファイルIDを点検記録のシートに書く
- 【自動】 必須の欄の空き、写真の付いていない「異常あり」の項目、基準の数値から外れた測定値に印を付ける
- 【自動】 記入漏れがあれば、その場で点検員本人へメールで知らせる
- 【人】 点検員が、建物にいるうちに測り直すか、フォームを出し直す
- 【自動】 毎月1日の朝、Apps Script が建物ごとにその月の記録を集め、Claude API に報告書の本文の下書きを書かせる
- 【自動】 下書きと点検結果の一覧、写真を、建物ごとの Google ドキュメントにまとめる
- 【人】 業務管理課の担当者が、基準外の値の対応と所見を確かめて直す
- 【人】 課長が確認し、PDF にしてオーナーへ送る
4番目と5番目が、この設計の分かれ目です。 記入漏れを月末ではなく入力の直後に返すので、点検員が建物を離れる前に直せます。 報告書の段階で「未測定」が出ることが、まず無くなります。
8番目で人が見るのは、文章の中身です。 写す作業、見比べる作業、貼る作業は自動になり、担当者の時間は、基準外の値の対応が正しく書かれているかと、所見がオーナーにとって的確かを確かめることに使われます。
02今回想定するシステム構成
点検員 ── Google フォーム(建物・点検項目・測定値・写真) ▼【トリガー①】フォームの送信(インストール型、フォームの側) Google Apps Script ├── Forms API ── 回答と写真のファイルIDを取る ├── 点検記録のシート ── 1回答を1行に書く ├── 基準のシート ── 測定値と比べて印を付ける └── MailApp ── 記入漏れを点検員へ知らせる ▼【トリガー②】毎月1日の朝(時間主導型) Google Apps Script ├── 点検記録のシート ── 建物ごとにその月の記録を集める ├── Claude API(UrlFetchApp、構造化出力)── 報告書の本文の下書き └── DocumentApp ── 建物ごとの報告書の文書を作る(一覧の表・写真) ▼ 【担当者が直し、課長が確認】── PDF にしてオーナーへ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Make、Power Automate |
| 生成AI | Claude API(構造化出力) | OpenAI API、Gemini API |
| 保管 | Google スプレッドシート(点検記録、基準、建物の台帳)、Google ドライブ(写真) | - |
| 文書 | Google ドキュメント(報告書の下書き) | - |
| 通知 | Gmail(MailApp) | Google Chat |
新しく足すのは、フォーム、点検記録と基準のシート、それに Apps Script だけです。 建物の台帳はいまの表を使います。オーナーへの送付は、これまでどおり課長が行い、この構成からオーナーへ直接送ることはしません。
きっかけにするのは、フォームの側のフォーム送信のトリガーです。 公式のページでは、フォーム送信のインストール型トリガーには Google フォームの側とスプレッドシートの側の2種類があります。フォームの側のイベントには、回答全体を表す response(FormResponse)が入ります。 写真のファイルを特定するのに、この回答のIDを使います。インストール型トリガーは、作った人のアカウントで動きます。 業務管理課の共用のアカウントで作り、個人の退職で止まらないようにします。
写真は、フォームのファイルのアップロードの質問で受けます。 Forms API の回答の定義では、ファイルのアップロードの回答(FileUploadAnswer)に、Google ドライブのファイルID、アップロード時のファイル名、MIME タイプが入ります。Apps Script からは、ScriptApp.getOAuthToken() で取ったトークンを付けて Forms API の回答の取得を呼びます。公式のページでは、コードが必要とする範囲を超える権限は、マニフェストのファイルで宣言できるとされています。回答の取得には forms.responses.readonly などの権限が要るので、マニフェストに書きます。
報告書は DocumentApp で組み立てます。 公式のページでは、appendTable は文字列の2次元配列から表を足し、文書は表で終われないため表の後に空の段落も足します。appendImage は画像のデータから文中の画像を作り、新しい段落に入れます。点検結果の一覧は表で、写真は画像で足します。
03どうやって実装するのか
処理の起点を決める
トリガーは2つです。 1つ目はフォームの送信で、点検員が送信するたびに1件ずつ動きます。2つ目は毎月1日の朝の時間主導型で、前の月の記録から建物ごとの報告書を作ります。
1つ目は、記入漏れを返すためのものです。 送信から数十秒で点検員のスマートフォンにメールが届けば、まだ建物の中にいるうちに測り直せます。 1日の終わりにまとめて確かめる形にすると、点検員はもう次の建物に移っています。
2つ目は、毎月1日の朝6時ごろに設定します。 公式のページでは、時間主導型のトリガーの時刻は少しばらつくことがあり、9時に設定すると9時から10時の間に動く例が示されています。担当者が出社する前に終わっていればよいので、ばらつきは問題になりません。
45棟を1回の実行で処理しません。 Apps Script の1回の実行は6分までで、1棟あたり Claude API の呼び出しと文書の作成に数十秒かかると、45棟では足りないことがあります。未処理の建物を記録しておき、5分を過ぎたら次の実行に回す作りにします。トリガーで動く時間の合計は、Google Workspace のアカウントで1日6時間までです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| フォームの回答 | 建物コード、点検日、点検員、点検項目ごとの結果(良・注意・異常あり)、測定値(階・居室ごと)、特記事項 | Google フォーム |
| 写真 | 異常のあった箇所と、測定の様子 | フォームのファイルのアップロード(Google ドライブ) |
| 基準のシート | 項目、比べ方(各測定値/1日の平均)、下限、上限、根拠 | 新しく作る |
| 建物の台帳 | 建物コード、名称、オーナー、特定建築物か、空調の方式(空気調和設備/機械換気設備)、担当の点検員 | 建物の台帳 |
| 前月の報告書の要点 | 前月の基準外の値と、その対応の予定 | 前月の点検記録のシート |
質を決めるのは、基準のシートの「比べ方」の列です。 建築物における衛生的環境の確保に関する法律の施行規則では、浮遊粉じんの量、一酸化炭素の含有率、二酸化炭素の含有率は、1日の使用時間中の平均値を基準の数値と比べることとされています。一方、温度や相対湿度は測った値で見ます。1回の測定値が1,000ppm を超えたからといって、それだけで「基準外」とは言えません。 比べ方をシートに持たせ、平均で比べる項目は、1日の測定がそろってから判定します。
空調の方式も、比べる項目を変えます。 施行令では、空気調和設備を設けている場合と機械換気設備を設けている場合で、基準を当てはめる項目が分かれています。機械換気設備の建物では、温度と相対湿度の基準は当てはめません。 建物の台帳の空調の方式から、比べる項目を選びます。
データの取得方法を決める
フォームの側のトリガーのイベントから response を受け取り、そこから回答のIDを取ります。回答のIDとフォームのIDで Forms API の回答の取得を呼び、ファイルのアップロードの回答からファイルIDを取ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 回答の各項目 | トリガーのイベントの response | 点検記録のシートに書く |
| 写真のファイルID・ファイル名 | Forms API の回答(FileUploadAnswer) | 報告書に貼る写真を特定する |
| 基準の数値と比べ方 | 基準のシート | 印を付ける |
| 空調の方式と特定建築物か | 建物の台帳 | 比べる項目を選ぶ |
| 前月の基準外の値 | 点検記録のシート(前月分) | 報告書で「前月からの続き」を書く |
写真は、ファイルIDだけを点検記録のシートに書きます。 写真そのものをシートに貼ると重くなり、月初めの処理が6分に収まりません。報告書を作るときに、ファイルIDから画像を読み出して文書に足します。 1項目に貼る写真は2枚までと決めておきます。
AIへ渡す前に整形する
- 建物コードを台帳と照らす … フォームの選択肢から選ぶので外れることは少ないですが、台帳に無いコードは処理を止めて業務管理課に知らせます
- 必須の欄の空きを数える … 点検項目の結果と、その建物で測るべき測定値(空調の方式で決まる)が全部入っているかを見ます
- 「異常あり」に写真があるかを見る … 結果が「異常あり」なのに写真が無い項目に印を付けます
- 測定値の単位と桁を確かめる … 二酸化炭素を ppm ではなく%で入れた、温度に小数点を打ち忘れた、といった誤りを、あり得ない範囲(例:二酸化炭素が10未満)で拾います
- 基準と比べる … 測った値で見る項目はその場で、1日の平均で比べる項目は、その日の測定がそろってから平均を出して比べます
- 前月からの続きを付ける … 前月に基準外だった項目に、今月の値を並べます
4番目は、AIに頼まずルールで拾います。 あり得ない範囲を外れた値は、記入漏れと同じく点検員にその場で返します。「1.2」が1,200ppm の打ち間違いかどうかを、AIに推測させないでください。 点検員本人に聞けば一言で分かります。
5番目の平均は、Apps Script の中で計算します。 AIに平均を計算させると、測定の回数を数え違えることがあります。数を扱う処理は、全部ルールの側に置きます。
6番目の前月からの続きは、建物コードと項目名で前月の印を引きます。 前月に基準外だった項目が今月は基準内に戻っていれば「改善」、続いていれば「継続」の印を付けて渡します。オーナーがいちばん気にするのは、前月に指摘されたことがどうなったかです。
AIに処理させる
させるのは、ルールで印を付けた点検記録をもとに、報告書の本文の4つの部分を書くことです。
| 書く部分 | 中身 | 材料 |
|---|---|---|
| 総括 | その月の点検の全体の状況を3〜4文で | 項目ごとの結果の件数、印の件数 |
| 基準外の値と対応 | 基準を外れた項目ごとに、値・場所・その場の対応・今後の対応 | 印の付いた測定値、特記事項 |
| 注意・異常の所見 | 「注意」「異常あり」の項目ごとに、状態と推奨する対応 | 点検員の特記事項、写真のファイル名 |
| 前月からの続き | 前月に指摘した項目の今月の状態 | 前月の印と今月の値 |
AIに渡すのは、ルールの結果を含めた記録で、判定の材料ではありません。 「この値が基準外か」はルールが決めて out_of_range: true として渡し、AIはそれを文章にするだけです。
| させないこと | 理由 |
|---|---|
| 基準に合っているかの判定 | 基準の数値と比べ方はルールで決める |
| 平均の計算・値の補完 | 数を扱う処理はルールの側に置く |
| 不具合の原因の断定 | 原因の判断は点検員と技術者が行う |
| 修繕の要否と費用の見積もり | 修繕の提案は会社としての判断で、別の手続き |
| 記録に無い対応を書く | 「交換済み」など、点検員が書いていない対応を作らない |
最後の行が、いちばん起きやすい失敗です。 「フィルターの汚れ(注意)」とだけある記録から、「清掃を実施しました」と書いてしまいます。 点検員が清掃をしていなければ、報告書が事実と違うことになります。
指示内容を固定する
あなたはビルメンテナンス会社の業務管理課で、オーナー向けの月次の点検報告書の
本文の下書きを書く立場です。渡す点検記録だけをもとに書いてください。
【書く部分】
1. summary ........ その月の点検の全体の状況(3〜4文)
2. out_of_range ... 基準外の値ごとに、項目・場所・値・その場の対応・今後の対応
3. findings ....... 結果が「注意」「異常あり」の項目ごとに、状態と推奨する対応
4. carry_over ..... 前月に指摘した項目の今月の状態
【厳守事項】
- 基準に合っているかどうかは、記録の out_of_range の値に従ってください。
自分で基準と比べて判定し直さないでください。
- 数値は記録のとおりに写してください。平均を計算し直したり、
単位を換算したりしないでください。
- 記録に書かれていない対応(清掃した、交換した、調整した)を書かないでください。
その場の対応が記録に無ければ「記録なし」としてください。
- 不具合の原因は断定しないでください。点検員の特記事項にある内容だけを
「点検員の所見では」として書いてください。
- 推奨する対応は「〜をお勧めします」「〜の確認が必要です」の形にし、
修繕の費用や業者の手配には触れないでください。
- 写真に触れるときは、記録の photo_files のファイル名だけを使ってください。
- オーナーに向けた丁寧語で書き、社内の略語は使わないでください。
【建物の情報】{building}
【この月の点検記録(ルールの結果を含む)】{records}
【前月に指摘した項目】{prev_findings}
「自分で基準と比べて判定し直さない」を明記しないと、AIは数値を見て独自に判定します。 二酸化炭素の1回の測定値が1,050ppm と書かれていれば、平均では基準内でも「基準超過」と書きます。判定はルールが決めたものに従わせ、文章を書く役に徹させます。
「記録なし」と書かせるのは、空欄をAIが埋めないようにするためです。 空いていると、それらしい対応を書き足します。「記録なし」が報告書に残れば、担当者が点検員に確かめるきっかけになります。
出力形式を固定する
Claude API の構造化出力で、次の形の JSON を受け取ります。
{
"building_code": "B-031",
"month": "2026-10",
"summary": "",
"out_of_range": [
{ "item": "相対湿度", "location": "5階 事務室", "value": "36%",
"onsite_action": "記録なし", "next_action": "" }
],
"findings": [
{ "item": "空調機フィルター", "status": "注意", "location": "屋上 AHU-2",
"observation": "", "recommendation": "", "photo_files": [""] }
],
"carry_over": [
{ "item": "", "last_month": "", "this_month": "" }
]
}
公式のページでは、構造化出力は output_config.format に type: "json_schema" の形でスキーマを渡し、オブジェクトの additionalProperties は false にする必要があります。数値の minimum・maximum のような制約は使えず、使うと400のエラーになります。値の範囲の確かめは、もともとルールの側で行うので、スキーマには型だけを書きます。
1つ目の理由は、文書の決まった場所に流し込めることです。 summary は冒頭、out_of_range と findings は表、carry_over は末尾に入れます。自由文で返させると、毎回見出しの位置が変わり、体裁を直す時間が残ります。
2つ目は、onsite_action を後から確かめられることです。 「記録なし」が入っている件数を数え、多い点検員には、その場の対応を書く欄の使い方を伝えます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google フォーム | フォームの側のフォーム送信のトリガー | 回答を受け取る |
| Forms API | UrlFetchApp(ScriptApp.getOAuthToken() のトークン) | 写真のファイルIDを取る |
| 点検記録・基準・建物の台帳のシート | SpreadsheetApp | 記録を書き、基準と台帳を読む |
| Claude API | UrlFetchApp、構造化出力 | 報告書の本文の下書き |
| Google ドキュメント | DocumentApp | 建物ごとの報告書を作る(表・写真) |
| Gmail | MailApp | 点検員への記入漏れの知らせ、担当者への完成の知らせ |
オーナーへのメールは、この構成からは送りません。 下書きの文書ができたことを業務管理課の担当者に知らせるところまでです。PDF にしてオーナーへ送るのは課長が行います。 確認の前の報告書がオーナーに届く経路を作らないためです。
UrlFetchApp の呼び出しは、Google Workspace のアカウントで1日10万回までです。45棟の月1回の報告書と、点検員の送信ごとの Forms API の呼び出しでは、上限の心配はありません。
人が確認する
担当者は、建物ごとの報告書の下書きを、次の順で確かめます。
- 基準外の値の表 … 値・場所が点検記録のシートと合っているか。平均で比べる項目が、平均で書かれているか
- 「記録なし」の欄 … 点検員に確かめ、その場の対応を書き足すか、「記録なし」のままにするかを決めます
- 所見と推奨する対応 … 記録に無い対応が書かれていないか。推奨の書きぶりがオーナーにとって的確か
- 写真 … 所見と写真が対応しているか。テナントの名札や書類が写り込んでいないか
- 直した箇所を残す … どの部分をどう直したかを、点検記録のシートの「確認」の列に書きます
例えば、5階の事務室の相対湿度が36%で基準外と出た建物です。 下書きの onsite_action は「記録なし」です。担当者が点検員に確かめると、加湿器の給水の弁が閉じていたので開けた、と分かります。担当者はその対応を書き足し、next_action に「翌週の再測定」を入れます。 記録に無かった対応を書けるのは、点検員に確かめた人だけです。
4番目の写り込みは、必ず人が見ます。 居室の測定の様子を撮った写真には、テナントの社員や机の上の書類が写ることがあります。オーナーに渡す前に、写真を差し替えるか、使わないかを決めます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 必須の欄が空いたまま送信された | その場で点検員へメール。報告書の作成時にまだ空いていれば「未測定」と印を付け、担当者へ |
| 写真が添付されていない「異常あり」 | 点検員へメール。写真なしで報告書に入れる場合は、担当者が理由を書く |
| あり得ない範囲の測定値 | 基準との比較をせず、点検員へ確かめのメール。修正の回答が来るまで判定を保留 |
| 1日の測定がそろわず平均が出せない | 平均で比べる項目の判定をせず「測定回数不足」と印を付ける |
| Claude API がエラーを返す | その建物を未処理として残し、次の実行で再試行。3回失敗したら担当者へ知らせる |
| 6分の実行時間に近づく | 処理済みの建物を記録し、次の実行に回す |
| 同じ点検を2回送信した | 建物・点検日・点検員が同じ回答は、新しいほうを使い、古いほうに印を付ける |
| 台帳に無い建物コード | 処理を止め、業務管理課へ知らせる |
上の3行は、すべて点検員の側で直せるものです。 メールには、空いている欄の名前と、フォームを出し直すためのリンクを入れます。 送信の直後に返すので、月初めに担当者が点検員を追いかける時間が無くなります。
記録を残す
- フォームの回答の全項目と、写真のファイルID(点検記録のシート)
- ルールが付けた印(記入漏れ・写真なし・範囲外・基準外)と、そのとき使った基準のシートの版
- Claude API に渡した記録と、返ってきた JSON の全文
- 担当者が直した箇所と、課長の確認の日時
- オーナーへ送った PDF のファイル
- 点検員への記入漏れの知らせの件数(点検員ごと・月ごと)
2つ目の「基準のシートの版」を残すのは、基準が変わることがあるためです。 基準の数値は政令の改正で変わることがあり、施行令にも改正の履歴が重なっています。当時の基準が残っていないと、過去の報告書の「基準外」が何に照らしたものか分からなくなります。
最後の行は、点検員への教育の材料になります。 件数は月初めの処理のついでに数えます。 知らせの件数が減らない点検員には、フォームの欄の意味を個別に説明します。
04実装レベルの3段階
半自動化で、第4章の①と②の大半が無くなります。 写し直しが無くなり、記入漏れは入力の日に返るからです。ただし、③の文章と④の写真の貼り付けは残ります。 本格構成で、1件80分が20分になり、この段階が本記事の想定です。 差が大きいのは、文章の下書きと写真の貼り付けが、建物ごとに自動で済むことです。 段階を飛ばさないでください。 半自動化の期間に、点検員がフォームに慣れ、欄の過不足が見えます。フォームの形が固まる前に報告書の自動化を作ると、欄を変えるたびに作り直しになります。
05工数削減シミュレーション
導入後 45件 × 20分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- オフィスビルやテナントビルの設備管理を数十棟受託し、毎月オーナーに点検報告書を出しているビルメンテナンス会社。点検員の記録が紙や表計算のファイルでばらばらに集まり、事務所の担当者が写し直して報告書を作っている場合。報告書を出した後に、測定値の記入漏れや基準外の値の見落としに気づくことがある場合。Google Workspace を使っていて、点検員がスマートフォンで Google フォームに入力できる場合。
- 受託している建物が数棟で、点検員と報告書の作成者が同じ人で足りている場合。オーナーから指定された様式の帳票システムで報告することが決まっていて、様式を変えられない場合。点検の記録をすでに設備管理の専用システムに入れていて、そこから報告書が出力できる場合。なお、設備の不具合の原因の判断、修繕の要否の判断、建築物環境衛生管理基準に適合しているかの最終的な判断は、この構成では代替できません。
07最小構成で試す方法
- 点検員2名、建物3棟に絞り、Google フォームで点検の結果と測定値を入れてもらう(写真は従来どおり)
- 回答のスプレッドシートに、基準の数値と比べる式を列で足し、外れた値に色を付ける
- 1か月分の回答を、手元の生成AIの画面に貼り、「この点検記録から、オーナー向けの報告書の総括・基準外の値と対応・所見を書いてください。記録に無い対応は書かず『記録なし』としてください」と指示する
- 出てきた文章を、担当者がいつもどおり作った報告書と並べる
- 記入漏れが、従来より早く見つかったかを点検員に聞く
3か月は続けてください。 1か月目はフォームに慣れるだけで終わり、記入漏れが減るかどうかは2か月目から見えます。
| 出てきた内容 | 判断 |
|---|---|
| 文章が担当者の報告書と同じくらい使える | Apps Script と Claude API の連携に進む |
| 記録に無い対応を書き足した | 指示の書き方で直る。構成は有効 |
| フォームの欄が足りず、点検員が特記事項にまとめて書く | フォームの設計が先。 点検項目を欄に分ける |
3行目が出ることは珍しくありません。 紙の点検表では余白に書いていたことが、フォームでは書く場所がありません。点検員に聞き、よく書かれることを欄にします。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 1回の測定値で「基準外」と判定してしまう | 浮遊粉じん・一酸化炭素・二酸化炭素は1日の使用時間中の平均値で比べる。比べ方をシートに持たせる |
| 機械換気設備の建物で温度の基準外が出る | 空調の方式で比べる項目を変える。台帳に方式の列を持たせる |
| AIが基準を独自に判定し直す | ルールの結果に従うよう指示し、判定の材料ではなく結果を渡す |
| 記録に無い対応が報告書に書かれる | 「記録なし」と書かせる。担当者が必ず確かめる |
| 45棟の処理が6分で終わらない | 処理済みの建物を記録し、次の実行に回す |
| 写真のファイルIDが取れない | Forms API の回答の取得に権限が要る。マニフェストに書く |
| 退職した人のアカウントのトリガーが止まる | インストール型トリガーは作った人のアカウントで動く。共用のアカウントで作る |
| 写真にテナントの社員や書類が写る | 報告書に入れる前に人が確かめる。撮り方を点検員に伝える |
| 基準の改正に気づかない | 基準のシートに根拠と版を持たせ、法令の改正を年に1回確かめる |
| 報告書がそのままオーナーへ届く | 送付は課長が行う。自動の送信を作らない |
上の2行が、この構成の失敗のほとんどです。 どちらも「基準の数値と比べる」という一見単純な処理に、比べ方と当てはめる範囲の違いが隠れていることから起きます。
下から2行目は、数年に一度は起きうる変化です。 基準の数値は政令と省令で決まっており、改正されれば翌月の報告書から比べる値が変わります。基準の数値をプログラムの中に書き込まず、シートに持たせる理由がここにあります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 建物の名称と所在、設備の状態と測定値、写真、点検員の氏名とメールアドレスです。写真にはテナントの社員や書類が写り込むことがあります。
- 外部へ渡す範囲を、報告書に必要な項目までに限る … Claude API に渡すのは、点検の結果、測定値、特記事項、写真のファイル名までです。写真そのものは渡しません。 点検員の氏名も、報告書の本文に要らなければ渡しません
- 基準への適合を AI に判断させない … 基準外かどうかは、施行令と施行規則に沿ってルールで決めます。オーナーが行政へ報告する場面で使われる数値なので、判定の根拠を説明できる形にしておきます
- 報告書をオーナーへ自動で送らない … 下書きまでにし、課長の確認を必ず通します
- 写真のフォルダの権限を絞る … フォームのファイルのアップロードで集まった写真は Google ドライブに保存されます。フォルダを業務管理課と点検員だけが見られるようにし、オーナーには報告書に貼ったものだけを渡します
- 建物の所在と設備の弱点の情報を外に出さない … 報告書には、受水槽や電気設備の場所と状態が書かれます。防犯の面でも扱いに注意が要る情報なので、文書の共有の範囲を建物ごとに決めます
誤りが起きた場合のリスクは、基準外の値を見落としてオーナーへ報告することと、基準内の値を基準外として報告することの2つです。 前者は記入漏れと範囲外の値を送信の直後に返すことで防ぎ、後者は比べ方の列で防ぎます。
10まず何から始めるか
1週目:基準のシートを作る
点検で測る項目ごとに、下限、上限、比べ方(各測定値/1日の平均)、当てはめる空調の方式、根拠の条文を並べます。建物の台帳に、特定建築物かどうかと空調の方式の列を足します。
2週目:フォームを作る
点検員2名と一緒に、点検項目、測定値の欄、写真の欄を決めます。紙の点検表の余白に書かれていたことを聞き、欄にします。
3週目:3棟で試す
点検員2名に3棟でフォームを使ってもらい、回答のスプレッドシートに基準と比べる式を足します。記入漏れが何件あったかを数えます。
4週目:送信の直後に記入漏れを返す
Apps Script でフォームの送信のトリガーを作り、記入漏れを点検員へメールで返します。点検員が建物にいるうちに直せたかを聞きます。
2か月目: Forms API で写真のファイルIDを取り、点検員を全員に広げます。3か月目以降: 月初めの Claude API による下書きと文書の作成を足し、1件80分が何分になったかを実測します。「記録なし」と「未測定」が報告書からほぼ消えた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| フォーム送信のインストール型トリガーに Google フォームの側とスプレッドシートの側の2種類があること。インストール型トリガーは作った人のアカウントで動くこと。時間主導型の時刻は少しばらつき、9時の設定で9時から10時の間に動く例があること | Apps Script: Installable Triggers | 2026-10-14 |
フォームの側のフォーム送信のイベントに、回答全体を表す response(FormResponse)が入ること | Apps Script: Event Objects | 2026-10-14 |
| 1回の実行が6分まで、トリガーの合計が Google Workspace で1日6時間まで、URL Fetch が Google Workspace で1日10万回までであること | Apps Script: Quotas | 2026-10-14 |
getOAuthToken() のトークンにスクリプトが必要とする範囲が含まれ、それを超える権限はマニフェストで宣言できること | Apps Script: ScriptApp | 2026-10-14 |
appendTable が文字列の2次元配列から表を足し、表の後に空の段落も足すこと。appendImage が画像のデータから文中の画像を作り、新しい段落に入れること | Apps Script: Body | 2026-10-14 |
ファイルのアップロードの回答(FileUploadAnswer)に、Google ドライブのファイルID、ファイル名、MIME タイプが入ること。回答の取得に forms.responses.readonly などの権限が要ること | Google Forms API: forms.responses | 2026-10-14 |
構造化出力で output_config.format に type: "json_schema" を渡すこと。オブジェクトの additionalProperties を false にすること。数値の minimum・maximum などの制約は使えず400になること | Claude: Structured outputs | 2026-10-14 |
| 建築物環境衛生管理基準として、二酸化炭素の含有率が百万分の千以下、温度が18度以上28度以下、相対湿度が40%以上70%以下などとされること。空気調和設備と機械換気設備で当てはめる項目が分かれること。特定建築物に事務所などで延べ面積3,000平方メートル以上のものが含まれること | e-Gov法令検索: 建築物における衛生的環境の確保に関する法律施行令 | 2026-10-14 |
| 浮遊粉じん・一酸化炭素・二酸化炭素は1日の使用時間中の平均値を基準と比べること。空気環境の測定を2か月以内ごとに1回、定期に行うこと | e-Gov法令検索: 建築物における衛生的環境の確保に関する法律施行規則 | 2026-10-14 |
基準への適合の最終的な判断と、修繕の要否の判断は、建築物環境衛生管理技術者と自社の技術者で行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1540)についてのご相談はこちらから。
