校務でAIを使うとき、いきなり長い文章を投げるよりも、先にGoogle Apps Scriptで「扱いやすい形」に整えておくと運用しやすくなります。
この記事では、スプレッドシート上のメモを対象に、AIへ渡す前の前処理として次の3つを行うGASの例を紹介します。
- 空行を除く
- 前後の余分な空白を落とす
- 氏名やメールアドレスのような個人情報になりやすい文字列を伏せる
AI APIそのものを呼び出す前段の処理なので、外部サービスに送る内容を一度確認しやすくする用途で使えます。
前提
スプレッドシートに次のような列がある想定です。
| A列 | B列 |
|---|---|
| 元メモ | 整形後メモ |
A列に校務メモを入れ、B列にAIへ渡しやすい形へ整えたテキストを書き出します。
スクリプト
スプレッドシートの「拡張機能」からApps Scriptを開き、以下を貼り付けます。
function normalizeSchoolNotes() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) {
return;
}
const range = sheet.getRange(2, 1, lastRow - 1, 1);
const values = range.getValues();
const normalized = values.map(([note]) => {
const text = String(note || "");
return [sanitizeNote(text)];
});
sheet.getRange(2, 2, normalized.length, 1).setValues(normalized);
}
function sanitizeNote(text) {
return text
.split(/\r?\n/)
.map((line) => line.trim())
.filter((line) => line.length > 0)
.join("\n")
.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi, "[email]")
.replace(/[一-龥ぁ-んァ-ン]{2,4}(先生|さん|様)/g, "[name]");
}
使い方
- A列の2行目以降に、整形したいメモを入れます。
- Apps Scriptで
normalizeSchoolNotesを実行します。 - B列に整形後のテキストが出力されます。
たとえば、A列に次のようなメモがあるとします。
山田先生へ確認。
欠席連絡は sample@example.com に送付済み。
来週の面談日程を再調整する。
実行後は、B列に次のように出力されます。
[name]へ確認。
欠席連絡は [email] に送付済み。
来週の面談日程を再調整する。
AIに渡す前に「確認列」を作る
前処理を入れても、伏せ字のルールですべての個人情報を検出できるとは限りません。
そのため、AI APIに送る処理を追加する場合でも、まずはB列の内容を人が確認できる状態にしておくと扱いやすくなります。校務の文章は文脈から個人が推測できる場合もあるため、メールアドレスや氏名だけでなく、所属、日付、出来事の組み合わせにも注意します。
APIキーを使う場合の置き場所
AI APIを呼び出す処理を追加する場合、APIキーをコードに直接書かず、Apps Scriptのスクリプトプロパティに保存します。
function getApiKey() {
const apiKey = PropertiesService.getScriptProperties().getProperty("AI_API_KEY");
if (!apiKey) {
throw new Error("AI_API_KEY is not set.");
}
return apiKey;
}
スクリプトプロパティは、Apps Scriptエディタの「プロジェクトの設定」から追加できます。
まとめ
AI活用は、プロンプトを書く前の「入力を整える」工程で扱いやすさが変わります。
GASで空行や空白を整え、個人情報になりやすい文字列を伏せ、確認しやすい列に出してからAIに渡す。小さな前処理ですが、校務のメモを扱うときの基本形として使いやすいパターンです。