保護者へ配るお知らせを、日付と曜日・持ち物・連絡先の食い違いまで配布前に点検する
保護者へ配る行事案内や持ち物、集金、休校のお知らせを、配布前に点検します。誤字に加えて、日付と曜日の食い違い、同じ文書内で時刻や持ち物が2か所で違うこと、前年の年度や担当者名の残り、古い電話番号を拾います。
- 生成AI
- ChatGPT/Claude/Gemini/Microsoft Copilot
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 教育
- 対象部門
- 総務
- 対象業務
- 内容確認・チェック
- 主な課題
- 人手が足りない/確認ミスが多い
- AIで行う処理
- 校正
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当教員がお知らせの原稿を作り、共有ドライブの提出フォルダに入れる
- 事務室の担当者が原稿を開き、誤字と言い回しを読み合わせる
- 本文の日付を1つずつ卓上カレンダーで見て、曜日が合っているかを確かめる
- 本文と日程表、裏面の申込票で、集合時刻や持ち物が同じかを見比べる
- 年度、担当者名、問い合わせ先の電話番号を、連絡先一覧と照らし合わせる
- 直すところがあれば、原稿に書き込んで担当教員へ戻す
- 直った原稿をPDFにし、配信アプリと紙で配る
- 人担当教員がお知らせの原稿をPDFにし、共有ドライブの提出フォルダに入れる
- 人事務室の担当者が、点検台帳のスプレッドシートのメニューから点検を実行する
- 自動スクリプトが提出フォルダの未点検のPDFを1本ずつ Claude API へ渡す
- 自動Claude が日付・時刻・持ち物・連絡先・年度・担当者名を、書かれた場所とともに抜き出し、誤字と文書内の食い違いを指摘する
- 自動スクリプトが抜き出した値を点検台帳に1行ずつ書き込む
- 自動台帳の数式が、年度と月日から日付を組み立て、曜日を計算して、書かれた曜日と比べる
- 自動台帳の数式が、電話番号とメールアドレスを連絡先一覧と照合し、年度を今年度と比べる
- 自動食い違いのある行に印を付け、お知らせごとに「要確認」の件数を出す
- 人担当者が要確認の行だけを原稿で確かめ、直す点を担当教員へ戻す
- 人直った原稿を配信する
各工程の詳しい説明を読む
- 担当教員がお知らせの原稿を作り、共有ドライブの提出フォルダに入れる
- 事務室の担当者が原稿を開き、誤字と言い回しを読み合わせる
- 本文の日付を1つずつ卓上カレンダーで見て、曜日が合っているかを確かめる
- 本文と日程表、裏面の申込票で、集合時刻や持ち物が同じかを見比べる
- 年度、担当者名、問い合わせ先の電話番号を、連絡先一覧と照らし合わせる
- 直すところがあれば、原稿に書き込んで担当教員へ戻す
- 直った原稿をPDFにし、配信アプリと紙で配る
(a)曜日の誤りは、前年の文書を使うと必ず出る。 1年は365日で52週と1日なので、同じ日付の曜日は翌年に1つずれます(うるう年をまたげば2つ)。本文の日付を直しても、申込票に前年の「10月18日(土)」が残れば、今年は日曜日です。 書き手も読み手も「土」の字を見て安心してしまいます。
(b)同じことが2か所に書かれていて、片方だけ直っている。 本文は「集合8時20分」、裏面の日程表は「8時30分」。持ち物は本文に「水筒」、持ち物欄に書かれていない。一方だけを読むとどちらも自然な文なので、並べて見ないと気づけません。
(c)古い名前と番号が残る。 「令和7年度」「担当 佐藤」「直通 03-xxxx-1234」。書き手は内容を直すことに集中していて、定型の部分は見ていません。 保護者が古い番号に電話をかけてつながらない、という形で初めて分かります。
(d)点検が特定の人に集中する。 行事が重なる時期は1日に十数本が届きます。卓上カレンダーと連絡先一覧を横に置いて1本ずつ読む作業は、慣れた人ほど速いので、その人に回ります。 その人が休むと、点検は読み合わせだけになります。
- 【人】 担当教員がお知らせの原稿をPDFにし、共有ドライブの提出フォルダに入れる
- 【人】 事務室の担当者が、点検台帳のスプレッドシートのメニューから点検を実行する
- 【自動】 スクリプトが提出フォルダの未点検のPDFを1本ずつ Claude API へ渡す
- 【自動】 Claude が日付・時刻・持ち物・連絡先・年度・担当者名を、書かれた場所とともに抜き出し、誤字と文書内の食い違いを指摘する
- 【自動】 スクリプトが抜き出した値を点検台帳に1行ずつ書き込む
- 【自動】 台帳の数式が、年度と月日から日付を組み立て、曜日を計算して、書かれた曜日と比べる
- 【自動】 台帳の数式が、電話番号とメールアドレスを連絡先一覧と照合し、年度を今年度と比べる
- 【自動】 食い違いのある行に印を付け、お知らせごとに「要確認」の件数を出す
- 【人】 担当者が要確認の行だけを原稿で確かめ、直す点を担当教員へ戻す
- 【人】 直った原稿を配信する
6番目と7番目が、この設計の分かれ目です。 曜日と連絡先の正誤は、AIの返事ではなく台帳の数式が出します。 AIが曜日を誤って読んでも、計算の側は誤りません。AIが担うのは4番目で、どこに何が書いてあるかを拾うところまでです。
9番目で人が見るのは、印の付いた行だけです。 200本の全文をもう一度読み直す設計にすると、40.0時間はほとんど減りません。印が0件のお知らせは、誤字の指摘に目を通して配信へ回します。
02今回想定するシステム構成
担当教員のお知らせ原稿(Google ドキュメント/Word) │ PDFにして提出フォルダへ ▼ 共有ドライブ「提出フォルダ」 │ ▼【人がメニューから実行】点検台帳(Google スプレッドシート) Google Apps Script │ 未点検のPDFを1本ずつ読み出す ▼ Claude API(PDFを読み、構造化出力でJSONを返す) │ ① 日付と書かれた曜日 ② 時刻 ③ 持ち物 │ ④ 連絡先 ⑤ 年度・担当者名 ⑥ 誤字・文書内の食い違い ▼ Google Apps Script ── 点検台帳へ1項目1行で書き込む ▼ 点検台帳の数式 ├──▶ 日付を組み立て、WEEKDAY関数で曜日を計算して比べる ├──▶ 電話番号・メールを連絡先一覧と照合する └──▶ 年度を今年度と比べる ▼ 【人が要確認の行だけ原稿で確認】 ▼ 担当教員へ差し戻し → 配信
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude(Claude API または Claude の画面。項目の抜き出し、誤字と文書内の食い違いの指摘) | ChatGPT、Gemini、Microsoft Copilot |
| 差異計算 | Google スプレッドシート(WEEKDAY関数による曜日の計算、連絡先一覧との照合) | Microsoft Excel |
| 連携 | Google Apps Script(提出フォルダのPDFを Claude API へ渡し、結果を台帳へ書き込む) | Python |
| 保管 | 共有ドライブ(提出フォルダ、点検済みフォルダ、連絡先一覧) | Microsoft SharePoint |
新しく作るのは、点検台帳のスプレッドシートと、そこに紐づけるスクリプトだけです。 連絡先一覧を「正本」として1つに決めることが、最初の準備作業です。
曜日を計算するのは WEEKDAY 関数です。 日付を渡すと曜日を数値で返し、種類の指定が1なら日曜日を1、土曜日を7とします。曜日を「土」のような文字ではなく数値で返すため、台帳に数値と曜日の文字の対応表を1つ置きます。
注意したいのは、日付の渡し方です。 WEEKDAY 関数は、セルに入力された文字列形式の日付を関数の中では日付に変換しません。 AIが返した「10月18日」をそのまま渡すのではなく、年・月・日を数値で受け取り、台帳で日付に組み立ててから渡します。 出力形式を年月日の数値に分けているのは、このためです(第7章)。
PDFを読むのは Claude API のPDF対応です。 文書の各ページを画像に変換し、各ページから抽出したテキストを画像とあわせて渡す仕組みで、日程表の枠や持ち物欄の表も、レイアウトごと読めます。 1リクエストの上限は32MB、ページ数は600ページ(コンテキストウィンドウが100万トークン未満のリクエストでは100ページ)で、パスワードや暗号化のない標準のPDFが対象です。Word の .docx はこの形式では渡せず、テキストかPDFに変換する必要があります。原稿はPDFで提出してもらい、配る形のまま点検します。
結果は構造化出力で受け取ります。 指定したスキーマに沿った応答を制約付きのデコードで保証する機能で、必須の項目が欠けたり、型が崩れたりしません。
03どうやって実装するのか
処理の起点を決める
事務室の担当者が、点検台帳のメニューから点検を実行したときに動かします。 台帳のスプレッドシートに紐づけたスクリプトは、ファイルを開いたときにメニューを追加でき、項目から任意の関数を呼べます。「提出フォルダを点検」という項目を1つだけ置きます。
ファイルが入るたびに自動で動かす形にはしません。 担当教員は同じお知らせを何度も差し替えます。保存のたびに点検すると、書きかけの原稿への指摘が台帳に積み上がり、どれが最新か分からなくなります。
点検を終えたPDFは点検済みフォルダへ移し、移すのは台帳への書き込みが成功したときだけにします。 提出フォルダに残った数が、そのまま未点検の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| お知らせのPDF | 本文、日程表、持ち物欄、裏面の申込票まで含めた配布する形のもの | 共有ドライブの提出フォルダ |
| 提出時の情報 | ファイル名、提出者、提出日時、対象学年 | 提出フォルダのファイル情報 |
| 今年度の設定 | 年度(例:令和8年度)、年度の始まりの西暦、学校の正式名称 | 点検台帳の設定シート |
| 連絡先一覧 | 部署・担当者名・電話番号・メールアドレス・有効な期間 | 共有ドライブの連絡先一覧 |
| 年間行事予定 | 行事名と実施日 | 学校の年間行事予定のスプレッドシート |
質を決めるのは、下の3つです。 今年度の設定が無ければ、書かれた「令和7年度」が古いのかどうかを決められません。連絡先一覧に有効な期間の列が無ければ、前年まで正しかった番号が今も正しいように見えます。
年間行事予定は、日付そのものの誤りを拾うために持ちます。 曜日の計算で分かるのは「日付と曜日が合っているか」までで、「10月17日(土)」と正しく書かれていても、運動会が10月24日なら誤りです。 行事名で年間行事予定を引き、日付が一致するかを台帳で見ます。
データの取得方法を決める
スクリプトは提出フォルダのPDFを読み出し、base64にして Claude API に渡します。Claude API のPDF対応は、URLでの参照、base64でエンコードしたPDF、Files API のファイルIDの3つの渡し方があり、この構成ではbase64を使います。共有ドライブのファイルは外から見えるURLにしないためです。
API の呼び出しは、Google Apps Script の UrlFetchApp で行います。method を post、contentType をJSON、headers にAPIキー、payload に要求の本文を入れます。muteHttpExceptions を true にしておくと、応答が失敗を示しても例外で止まらずに応答が返るので、失敗したPDFだけを飛ばして次へ進めます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| お知らせのPDF | 提出フォルダ | Claude API へ渡す |
| 今年度の設定 | 点検台帳の設定シート | 年度の比較と、日付の年の決定 |
| 連絡先一覧 | 共有ドライブのスプレッドシート | 電話番号・メールの照合(AIへは渡さない) |
| 年間行事予定 | 学校のスプレッドシート | 行事の日付の照合(AIへは渡さない) |
表の右端に書いたとおり、連絡先一覧と年間行事予定はAIへ渡しません。 照合は台帳の数式で行い、AIには文書だけを渡します。AIに一覧を渡すと、文書の番号を一覧の番号に「直して」返すことがあり、見つけたかった食い違いが消えます。
AIへ渡す前に整形する
- 形式の確認 … PDF以外(ドキュメント、.docx、画像)はPDFにしてから提出するよう差し戻します。.docx はこの渡し方では受け付けられません
- パスワードの確認 … パスワードや暗号化のあるPDFは読めません。保護を外して提出し直してもらいます
- サイズの確認 … 1リクエスト32MBが上限です。写真を多く入れた行事の報告は、写真を縮めてから提出してもらいます
- 児童・生徒の氏名の確認 … 表彰や係分担など、個人名の入ったお知らせかどうかを提出時の区分で見ます。入っているものは氏名を伏せた版を点検に回します(第13章)
- 同じお知らせの差し替えの確認 … 同じファイル名で提出日時が新しいものがあれば、古いほうの点検結果に「差し替え済み」の印を付けます
- 年度の設定の読み込み … 設定シートから今年度と、年度の始まりの西暦を読みます
4番目を後回しにしないでください。 表彰や大会結果、班分けのお知らせには生徒の氏名が並びます。提出フォルダを「氏名なし」と「氏名あり」に分けます。
AIに処理させる
させるのは、文書から項目を拾い、書かれた場所とともに一覧にすることと、誤字と文書内の食い違いを指摘することです。 正しいかどうかの判定の多くは、台帳の側に置きます。
| 拾うもの | 書き出す内容 | 正誤を決めるのは |
|---|---|---|
| 日付 | 書かれたままの文字列、月・日の数値、書かれた曜日の文字、何の日付か、書かれた場所 | 台帳の数式(曜日の計算) |
| 時刻 | 書かれたままの文字列、時・分、何の時刻か(集合・解散など)、書かれた場所 | 台帳の数式(同じ項目の値の比較) |
| 持ち物 | 品名、書かれた場所 | 台帳の数式(場所ごとの有無の比較) |
| 連絡先 | 電話番号・メールアドレスを書かれたまま、添えられた部署名・担当者名 | 台帳の数式(連絡先一覧との照合) |
| 年度・担当者名 | 書かれた年度、署名や担当欄の氏名 | 台帳の数式(今年度・連絡先一覧との比較) |
| 誤字・言い回し | 該当箇所、指摘、直した案 | 人 |
| 文書内の食い違い | 同じことを指す2つ以上の記載と、その違い | 人(AIの指摘を原稿で確かめる) |
AIだけにしかできないのは、「何の日付か」「何の時刻か」を付けることです。 本文の「当日は8時20分に正門へ」と、日程表の「集合 8:30」が同じ集合時刻だと分かるのは、文を読めるからです。この「何の」が付いていれば、値の比較は台帳の数式でできます。 同じ「集合」の行に値が2種類あれば、それが食い違いです。
| させないこと | 理由 |
|---|---|
| 曜日の計算 | 生成AIは曜日を誤りうる。計算は台帳の関数で行う |
| 年の補完 | 1〜3月は翌年になる。年は台帳が年度から決める |
| 電話番号の修正 | 桁を直す、ハイフンを整えるとそれらしい番号になる。書かれたまま写す |
| 担当者名の差し替え | 正しい担当者を推測しない。一覧との照合は台帳で行う |
| 行事の中身の良し悪し | 持ち物が適切か、時刻が妥当かは学校が決める |
| 原稿の書き換え | 出すのは指摘と直した案まで。原稿は担当教員が直す |
1行目と2行目が、この構成の中心です。 曜日を書かせると、AIは文書に書かれた「(土)」に引きずられて「土曜日で正しい」と返しがちで、前年の残りという、いちばん拾いたい誤りを見逃します。 年を書かせると、1月の行事を今年の1月として計算してしまいます。AIには「書かれている曜日の文字」を写させるだけにし、正しい曜日は台帳が出します。
指示内容を固定する
あなたは学校の事務室で、保護者へ配るお知らせを配布前に点検する立場です。
添付のPDFだけを読み、書かれていることを項目ごとに書き出してください。
推測で補わないでください。
【書き出す項目】
1. 日付:書かれた文字列をそのまま、月と日を数値で、書かれた曜日の文字を1字で。
何の日付か(例:運動会の実施日、申込の締切)と、書かれた場所も書く
2. 時刻:書かれた文字列をそのまま、時と分を数値で。何の時刻か(集合、開始、
解散、受付など)と、書かれた場所も書く
3. 持ち物:品名を1つずつ。書かれた場所も書く
4. 連絡先:電話番号とメールアドレスを書かれたまま。添えられた部署名と担当者名
5. 年度と担当者名:書かれた年度、署名や担当欄の氏名
6. 誤字と言い回し:該当箇所、指摘、直した案
7. 文書内の食い違い:同じことを指しているのに値が違う記載の組
【書かれた場所の書き方】
「本文」「日程表」「持ち物欄」「申込票」「欄外」のどれか。
表や枠の中は、その枠の見出しを使ってください。
【厳守事項】
- 曜日が日付と合っているかを判断しないでください。計算もしないでください。
書かれた曜日の文字を写すだけにしてください。曜日が書かれていなければ空欄です。
- 年を補わないでください。書かれていない年は空欄にしてください。
- 電話番号やメールアドレスを直さないでください。桁、ハイフン、全角半角も
書かれたまま写してください。
- 担当者名が正しいかを判断しないでください。書かれた氏名を写すだけにしてください。
- 同じ行事の同じ時刻(例:集合時刻)が2か所にあれば、値が同じでも両方を
書き出し、「何の時刻か」に同じ名前を付けてください。
- 記載がなければ「不明」とし、推測で埋めないでください。
- 持ち物や時刻が妥当かどうかは書かないでください。
- 「〇〇」「未定」など書きかけの箇所は、誤字の欄に「未記入」として書いてください。
- お知らせ以外の書類と判断した場合は、点検をせず document_type に種類を書いてください。
【今年度】{fiscal_year}
【学校の正式名称】{school_name}
「曜日を判断しない」を明記しないと、正誤を書いてきます。 しかも文書に書かれた曜日をそのまま正しいと返すことが多く、台帳の計算と食い違った結果が並ぶと、人はAIのほうを信じがちです。 判断をさせなければ、比べる相手は計算の1つだけになります。
「値が同じでも両方を書き出す」も同じ理由です。 食い違ったときだけ書かせると、AIが読み違えた組は台帳に上がってきません。
出力形式を固定する
次の形のJSONで受け取ります。 構造化出力でスキーマを指定し、この形以外で返らないようにします。
{
"notice_id": "",
"document_type": "notice",
"dates": [
{ "label": "運動会の実施日", "text": "10月18日(土)",
"month": 10, "day": 18, "weekday_written": "土", "location": "申込票" }
],
"times": [
{ "label": "集合", "text": "8時30分", "hour": 8, "minute": 30, "location": "日程表" }
],
"items": [
{ "name": "水筒", "location": "本文" }
],
"contacts": [
{ "value": "03-xxxx-1234", "kind": "phone", "dept": "事務室", "person": "" }
],
"fiscal_year_written": "令和7年度",
"signers": [""],
"typos": [
{ "where": "", "issue": "", "suggestion": "" }
],
"conflicts": [
{ "label": "集合", "values": ["8時20分(本文)", "8時30分(日程表)"] }
]
}
1つ目の理由は、日付を年月日の数値に分けて受け取れることです。 台帳では、月が4以上なら年度の始まりの年、1〜3月ならその翌年として年を決め、数値の年・月・日から日付を組み立てて WEEKDAY 関数に渡します。月が1〜12、日がその月の日数の範囲にあるかも、組み立てる前に台帳で確かめます。構造化出力は数値の最小・最大の制約に対応していないため、範囲の確認はスキーマではなく台帳の側に置きます。
| 台帳の列 | 中身 |
|---|---|
| 年 | 月が4以上なら年度の始まりの西暦、1〜3月ならその翌年 |
| 計算した曜日 | 組み立てた日付を WEEKDAY 関数(種類1)に渡し、1〜7を日〜土の文字に置き換える |
| 曜日の判定 | 書かれた曜日と計算した曜日が同じなら「一致」、違えば「要確認」、書かれていなければ「曜日なし」 |
| 行事日の判定 | 行事名で年間行事予定を引き、日付が違えば「要確認」 |
2つ目は、label で同じ項目の記載をまとめられることです。 times の中で同じ label を持つ行の値が2種類以上あれば、台帳が「要確認」を付けます。items は location ごとに品目を並べ、ある場所にだけある品目に印を付けます。conflicts はAIが気づいた食い違いの一覧で、台帳の判定と重なっていれば確度が高く、AIだけが挙げたものは人が原稿で確かめます。
3つ目は、contacts を書かれたままで受け取れることです。 台帳の側で全角を半角に、ハイフンを除いた形にそろえてから連絡先一覧と照合し、一覧に無い番号、有効な期間が切れた番号に印を付けます。fiscal_year_written は今年度と比べ、signers の氏名は連絡先一覧の在籍中の担当者と照合します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 提出フォルダ | Google Apps Script の読み出し | 未点検のPDFを1本ずつ取る |
| Claude API | UrlFetchApp による呼び出し | PDFを渡し、構造化出力でJSONを受け取る |
| 点検台帳 | スプレッドシートへの書き込み | 日付・時刻・持ち物・連絡先を1項目1行で書く |
| 連絡先一覧・年間行事予定 | 台帳の数式による参照 | 照合と行事日の確認 |
| 点検済みフォルダ | ファイルの移動 | 書き込みが成功したPDFだけを移す |
原稿は書き換えません。 点検台帳に出すのは指摘と照合の結果までで、直すのは担当教員です。 原稿を自動で直す経路を足すと、AIの読み違いがそのまま保護者に届きます。
連絡先一覧も読むだけです。 一覧に無い番号が見つかっても書き足しません。番号が変わったのか原稿の誤りなのかは、担当者に確かめてから一覧を直します。
人が確認する
人が確かめるのは、台帳で「要確認」の付いた行と、AIの誤字の指摘だけです。 一致した行は件数を見て終わりにします。全行を原稿と照らし直すと、第10章の10.0時間には収まりません。
- 曜日の「要確認」を先に見る … 計算した曜日のほうが正しいのが原則です。原稿のどちらの日付を直すべきか(日付が違うのか曜日が違うのか)は、年間行事予定と照らして決めます
- 連絡先と年度の「要確認」を見る … 一覧に無い番号は、担当者に今の番号を確かめます
- 時刻と持ち物の食い違いを原稿で見る … どちらが正しいかは書き手に聞きます。事務室で決めません
- 誤字の指摘に目を通す … 直した案をそのまま採るかは、書き手の意図を見て決めます
- 戻した内容を台帳に記録する … 何を指摘し、書き手がどう直したかを残します
1番目で、計算を疑わないでください。 原稿を見て「土曜で合っている気がする」と感じるのが、第3章の(a)です。 疑うべきは設定シートの年度のほうです。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・暗号化されたPDF | 読めない。保護を外して提出し直してもらう |
| .docx や画像で提出された | PDFにして再提出してもらう |
| 32MBを超える | 写真を縮めて再提出。分けられる文書は分ける |
| 書かれた曜日が無い日付 | 「曜日なし」として一覧に出す。曜日を書き足すかは書き手が決める |
| 月・日が範囲外(9月31日など) | 日付を組み立てずに「要確認」。別の日に読み替えない |
| 「10月中旬」「後日連絡」など日が無い | 日付として扱わず、text だけ残す |
| 年が書かれた日付が今年度の範囲外 | 前年の残りの疑いとして「要確認」 |
| 連絡先が一覧に無い | 印を付けて担当者に確認。一覧の未更新をまず疑う |
| API が失敗を返した | そのPDFは提出フォルダに残し、次のPDFへ進む |
| お知らせ以外の書類が混ざる | document_type を見て点検せず、提出者に戻す |
上から4行目と5行目が、曜日の確認で起きやすい例外です。 曜日の無い日付は誤りではないので印の色を分け、範囲外の日付は組み立てる前に止めます。
「連絡先が一覧に無い」の多くは、一覧のほうが古いことが原因です。 年度初めの異動の時期に続いたら、一覧の更新を先に済ませます。
記録を残す
- 点検したPDFと、提出者・提出日時・点検日時
- Claude API が返したJSONの全文
- 台帳の判定結果と、そのとき使った今年度の設定と連絡先一覧の版
- 人が指摘を採らなかった記録 … どの行を、なぜ採らなかったか
- 書き手へ戻した内容と、直った版の提出日時
- お知らせの種類ごとの「要確認」の件数
3つ目で「そのときの設定と一覧の版」を残すのは、一覧が年度の途中で変わるためです。 番号が変わった後で過去の点検を見直すと、当時は正しかった番号が誤りに見えます。
最後の行は、下敷きにする前年の文書を直す材料になります。 毎年同じお知らせで同じ印が出るなら、原稿を書く前に、下敷きのほうから古い年度と番号を消しておきます。
04実装レベルの3段階
最小構成は、本数がさばけません。 表を貼り付ける手間が1本ごとにかかるので、200本には使えません。確かめるための段階です。 本記事の想定は半自動化です。 月200本の大半はここで回り、1本12分の照らし合わせの部分がほぼ無くなります。 本格構成の配信アプリとの連動は、アプリの側に外から予約を操作する手段があるかで決まり、この部分は利用する配信アプリに応じた個別実装になります。 半自動化を回すと、一覧のほうの穴が先に見えてきます。 そこを直してからでないと、本格構成で配信を止める理由の多くが一覧の古さになります。
05工数削減シミュレーション
導入後 200件 × 3分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 行事案内・持ち物・集金・休校連絡など、保護者向けのお知らせを月に百本以上出す私立学校・学習塾・保育施設。前年の文書を下敷きにして作ることが多く、曜日の直し忘れや古い担当者名の残りが毎年のように起きている場合。お知らせの点検が事務室や教頭など少数の人に集中している場合。問い合わせ先の電話番号やメールアドレスを一覧で管理できる場合。
- お知らせが月に数本で、読み合わせで足りる場合。お知らせを校務支援システムの定型画面から作っており、日付や連絡先が入力欄として固定されている場合。学校として外部の生成AIへ文書を渡すことが認められていない場合。なお、行事の中身や持ち物そのものが妥当かどうかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月配ったお知らせから20本を選ぶ(うち数本は、配った後に誤りが見つかったものを入れる)
- Claude の画面にPDFを1本ずつ添付し、第7章のプロンプトから JSON の指定を外して「表で書き出してください」と指示する
- 出てきた日付の表をスプレッドシートに貼り、年・月・日の列から日付を組み立てて WEEKDAY 関数で曜日を出す
- 書かれた曜日と計算した曜日を並べ、違う行に色を付ける
- 電話番号を連絡先一覧と目で照らし、当時の点検で見つかった誤りと比べる
20本は必ずやってください。 スクリプトを組む前に、「AIが日付と時刻を漏れなく拾えるか」を確かめます。 曜日の計算は関数なので、拾えてさえいれば誤りません。
| 出てきた内容 | 判断 |
|---|---|
| 当時見つかった誤りが台帳で出た | スクリプトでつなぐ段階に進む |
| 日程表や申込票の日付を拾い漏らした | 「書かれた場所」の指示を足せば直る。構成は有効 |
| AIが曜日の正誤を書いてきた | 指示の「判断しない」を強める。判定は計算の列だけを見る |
2行目が出ることは珍しくありません。 表や枠の中の日付は、本文の日付より拾い漏れが起きやすいところです。場所の名前を指示に書き出しておくと、AIがそれぞれの枠を見に行きます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが曜日の正誤を書いてくる | 判断も計算もさせないと指示に書く。 判定は台帳の計算の列だけを見る |
| 1〜3月の行事の曜日がずれて出る | 年は台帳が年度から決める。AIに年を補わせない |
| 文字列の日付を WEEKDAY に渡して計算できない | 年・月・日を数値で受け取り、台帳で日付に組み立てる |
| 9月31日のような日付が別の日として計算される | 組み立てる前に日の範囲を確かめる |
| 日程表や申込票の日付を拾い漏らす | 書かれた場所の名前を指示に列挙する |
| 同じ集合時刻に別の名前が付いて比べられない | 「何の時刻か」の名前の例を指示に書き、台帳で名前の言い換えを1つにまとめる |
| 電話番号が「直されて」返る | 書かれたまま写すと指示し、連絡先一覧をAIへ渡さない |
| 連絡先一覧が古く、印が出すぎる | 有効な期間の列を足し、異動の時期に更新する |
| .docx や鍵付きPDFで止まる | 提出はパスワードの無いPDFに決める |
| 書きかけの原稿を点検してしまう | 保存のたびに動かさず、担当者がメニューから実行する |
| 事務室が食い違いの正しいほうを決めてしまう | どちらが正しいかは書き手に聞く |
上の2行が、この構成の失敗のほとんどです。 どちらも、曜日の正しさをAIに持たせたところから出ています。計算は関数に、年の決め方は設定に置けているかで、運用に乗るかが決まります。
下の2行も、同じくらい早く効いてきます。 書きかけの点検結果が台帳に積み上がると、どれが最新か分からなくなり、事務室が推測で直し始めると、点検の意味がなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 行事の日程、学校の連絡先、教職員の氏名。そしてお知らせによっては児童・生徒の氏名、学年・組、保護者の氏名が含まれます。
- 児童・生徒の氏名が入った文書は、外部のAIへ渡す前に伏せる … 表彰、大会結果、班分け、係分担のお知らせには氏名が並びます。氏名を「生徒A」のように置き換えた版を作り、その版だけを点検に回します。 点検で見たいのは日付と連絡先なので、氏名を伏せても点検の質は落ちません
- 学校のAI利用の方針に従う … 生成AIに校務の文書を渡してよいか、どのサービスなら使ってよいか、どの情報は渡さないかは、学校や法人として決めた方針に従います。 方針が無い場合は、この構成を使う前に管理職と決めてください
- API の利用条件を確かめる … 渡した文書がどう扱われるかは、サービスと契約の形によって違います。画面で試すときと API で組むときで条件が異なることがあるので、それぞれの条件を事務室で確認しておきます
- 連絡先一覧と年間行事予定を外部へ出さない … 照合は台帳の数式で行い、一覧そのものはAIへ渡しません。 教職員の直通番号や、まだ公表していない行事予定が含まれます
- 点検を配布の判断にしない … 印が0件でも、それは曜日と連絡先が一覧と合っているという意味で、お知らせの内容が正しいという意味ではありません。 配布の判断は、これまでどおり書き手と管理職が行います
- APIキーと台帳の編集権限を事務室に限る … キーはコードの外に置き、台帳を編集できる人を絞ります
誤りが起きた場合のリスクは、誤った日付や番号のまま配ってしまうことと、正しい記載を誤りとして直させてしまうことの2つです。 前者は曜日の判断をAIに持たせると起き、後者は古い連絡先一覧で照合すると起きます。どちらも「何を正本にするか」から出ているので、そこは設計で守ります。
10まず何から始めるか
1週目:連絡先一覧の正本を決める
事務室にある連絡先の一覧を1つにまとめ、有効な期間の列を足します。 担当者の異動や直通番号の変更が、どこに反映されているかを確かめます。お知らせに載る番号は限られているので、よく載る上位の番号から埋めます。
2週目:20本で試す
先月のお知らせから20本を選び、Claude の画面で日付・時刻・持ち物・連絡先を書き出させます。スプレッドシートに貼って WEEKDAY 関数で曜日を出し、当時見つかった誤りが出るか、日程表や申込票の日付を拾い漏らしていないかを最優先で見ます。
3週目:提出の決まりを決める
原稿はパスワードの無いPDFで提出すること、氏名の入るお知らせは別のフォルダに入れることを、教員に周知します。あわせて、学校のAI利用の方針で点検に使ってよいかを管理職と確かめます。
4週目:台帳とスクリプトをつなぐ
点検台帳に設定シートと判定の数式を作り、メニューから提出フォルダのPDFを Claude API へ渡して書き込むところまで作ります。この時点では誤字の指摘は出さず、日付と連絡先の照合だけを見ます。
2か月目: 時刻と持ち物の比較、誤字の指摘、年間行事予定との照合を足し、「要確認」の件数を週ごとに数えます。3か月目以降: 1本12分が何分になったかを実測します。前年の文書から古い年度と番号を消した下敷きをそろえ、「要確認」の多くが一覧の古さでなく原稿の誤りになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
構造化出力が、指定したスキーマに応答を沿わせ、制約付きのデコードでスキーマに準拠した応答を保証すること。JSON出力(output_config.format)と厳密なツール使用の2つがあること。必須項目と型が保証されること。数値の制約(minimum、maximum など)と文字列の制約には対応していないこと | Claude Docs: Structured outputs | 2026-09-29 |
| PDFの上限が1リクエスト32MB、600ページ(コンテキストウィンドウが100万トークン未満のリクエストでは100ページ)で、パスワード・暗号化のない標準のPDFが対象であること。URL、base64、Files API のファイルIDの3つで渡せること。各ページを画像に変換し、抽出したテキストとあわせて渡すこと。.docx などはテキストかPDFに変換が必要なこと | Claude Docs: PDF support | 2026-09-29 |
WEEKDAY 関数の構文が WEEKDAY(date, [type]) で、種類1は日曜日を1・土曜日を7とすること。曜日を文字ではなく数値で返すこと。文字列形式の日付を関数の中では変換しないこと | Google ドキュメント エディタ ヘルプ: WEEKDAY | 2026-09-29 |
UrlFetchApp がURLを取得して外部と通信できること。fetch で method、contentType、headers、payload を指定できること。muteHttpExceptions を true にすると失敗の応答でも例外を投げずに応答を返すこと | Google Apps Script: UrlFetchApp | 2026-09-29 |
生成AIに校務の文書を渡してよいかは、学校や法人のAI利用の方針に従ってください。 本記事は上記のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0287)についてのご相談はこちらから。
