GASで校務メールの定型文を自動生成する: 教員向けの小さな時短テンプレート
Google Apps Script(GAS)を使うと、Google スプレッドシートに入力した情報から、保護者連絡や校内連絡の定型メール文を生成できます。
この記事では、教員が日々の校務で使いやすいように、次の流れを1つのテンプレートとしてまとめます。
- スプレッドシートに連絡内容を入力する
- GASでメール本文を生成する
- 生成結果をシートに書き戻す
- 必要に応じて人が確認してから送信する
送信まで自動化するのではなく、まずは「本文作成の手間を減らす」ことに絞ります。校務では誤送信や表現の確認が重要なので、最初の導入ではこの形が扱いやすいです。
想定するシート構成
スプレッドシートに、次のような列を用意します。
| 列 | 項目 | 例 |
|---|---|---|
| A | 宛名 | 山田様 |
| B | 児童生徒名 | 山田太郎さん |
| C | 用件 | 明日の持ち物について |
| D | 補足 | 体育館シューズを持参してください |
| E | 生成文 | GASで出力 |
1行目は見出し、2行目以降にデータを入れる想定です。
GASコード
スプレッドシートで 拡張機能 -> Apps Script を開き、次のコードを貼り付けます。
function generateSchoolMessages() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) {
return;
}
const values = sheet.getRange(2, 1, lastRow - 1, 4).getValues();
const messages = values.map(([recipient, studentName, subject, note]) => {
if (!recipient || !studentName || !subject) {
return [''];
}
const body = buildMessage({
recipient,
studentName,
subject,
note
});
return [body];
});
sheet.getRange(2, 5, messages.length, 1).setValues(messages);
}
function buildMessage({ recipient, studentName, subject, note }) {
const noteText = note ? `\n\n${note}` : '';
return `${recipient}
いつもお世話になっております。
${studentName}について、${subject}のご連絡です。${noteText}
ご確認のほど、よろしくお願いいたします。`;
}
実行すると、E列にメール本文が生成されます。
メニューから実行できるようにする
毎回 Apps Script の画面を開くのは手間なので、スプレッドシート上部に独自メニューを追加します。
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('校務ツール')
.addItem('連絡文を生成', 'generateSchoolMessages')
.addToUi();
}
これで、シートを開いたときに 校務ツール -> 連絡文を生成 から実行できます。
入力漏れを見つけやすくする
宛名、児童生徒名、用件が空欄の行は、生成文を空欄にしています。
if (!recipient || !studentName || !subject) {
return [''];
}
空欄のままにしておくと、あとからシート上で未入力行を確認しやすくなります。必要であれば、次のようにメッセージを出す形にもできます。
if (!recipient || !studentName || !subject) {
return ['入力不足があります'];
}
AI APIを使う前に、まずテンプレート化する
校務効率化というと、すぐにAI APIを使いたくなる場面があります。ただ、定型連絡の多くは、いきなりAIに任せなくてもテンプレート化だけで十分に扱いやすくなります。
テンプレート化から始めるメリットは次の通りです。
- 出力文の形をそろえやすい
- 予期しない言い回しが出にくい
- APIキーを扱わずに始められる
- 学校や学年の表現ルールに合わせて調整しやすい
特に校務で使う文章は、便利さだけでなく確認しやすさも大切です。まずはGASだけで固定文を作り、必要になった段階でAI APIや別の自動化を検討すると、運用に乗せやすくなります。
少し応用: 用件ごとに文面を切り替える
用件の種類が決まっている場合は、テンプレートを分岐できます。
function buildMessage({ recipient, studentName, subject, note }) {
const noteText = note ? `\n\n${note}` : '';
if (subject.includes('持ち物')) {
return `${recipient}
いつもお世話になっております。
${studentName}の持ち物についてご連絡いたします。${noteText}
ご準備のほど、よろしくお願いいたします。`;
}
if (subject.includes('欠席')) {
return `${recipient}
いつもお世話になっております。
${studentName}の欠席に関するご連絡です。${noteText}
ご確認のほど、よろしくお願いいたします。`;
}
return `${recipient}
いつもお世話になっております。
${studentName}について、${subject}のご連絡です。${noteText}
ご確認のほど、よろしくお願いいたします。`;
}
includes() を使うだけでも、簡単な分類なら対応できます。分類が増えてきたら、シート側に「連絡種別」列を作り、種別ごとにテンプレートを切り替える設計にすると管理しやすくなります。
まとめ
GASを使うと、スプレッドシートの入力内容から校務連絡の定型文を生成できます。
今回のポイントは、送信まで自動化しないことです。まずは本文作成を補助する形にすると、現場の確認フローを残したまま小さく導入できます。
教員向けのAI活用やGAS校務効率化の実践メモは、note と Kindle でも整理しています。