出欠回答の未入力と表記ゆれを集計前に発見|GASで回答行をdry-run監査
ツールおじ|GoogleアカウントをAIエージェント化
出欠表を集計しようとしたら、名前が空欄、回答が「参加」「出席」「○」に分かれていて数が合わない。そんな集計前の困りごとを、シートを書き換えずに発見する無料GAS例です。この記事では出欠の事実入力だけを検査し、勤怠・給与・労務上の判断は行いません。
先に知っておきたいこと
- `DRY_RUN = true` を固定し、セルの更新・削除・通知を行いません。
- A列を名前、B列を出欠回答として、2行目から最大500行を確認します。
- 許可する回答は「参加」「欠席」「未定」の3種類です。
- 氏名や回答内容をログへ出さず、行番号とエラー種別だけを記録します。
準備するシート
- シート名: `出欠回答`
- A列: 名前
- B列: 回答(参加・欠席・未定)
- 1行目は見出し、2行目以降に検証用データを置きます。
コピーして使える最小コード
const DRY_RUN = true;
const SHEET_NAME = '出欠回答';
const MAX_ROWS = 500;
const ALLOWED_STATUS = ['参加', '欠席', '未定'];
function auditAttendanceInputFree() {
if (DRY_RUN !== true) throw new Error('安全のためDRY_RUN=trueで実行してください');
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
if (!sheet) throw new Error('シート「' + SHEET_NAME + '」が見つかりません');
const lastRow = sheet.getLastRow();
if (lastRow < 2) throw new Error('確認する回答行がありません');
const rowCount = lastRow - 1;
if (rowCount > MAX_ROWS) throw new Error('500行を超えています。範囲を分けてください');
const values = sheet.getRange(2, 1, rowCount, 2).getDisplayValues();
const issues = [];
const counts = { '参加': 0, '欠席': 0, '未定': 0 };
values.forEach((row, index) => {
const rowNumber = index + 2;
const name = String(row[0] || '').trim();
const status = String(row[1] || '').trim();
if (!name) issues.push({ row: rowNumber, type: '名前未入力' });
if (!status) {
issues.push({ row: rowNumber, type: '回答未入力' });
} else if (!ALLOWED_STATUS.includes(status)) {
issues.push({ row: rowNumber, type: '回答表記ゆれ' });
} else {
counts[status] += 1;
}
});
console.log(JSON.stringify({ dryRun: DRY_RUN, checkedRows: rowCount, counts, issues: issues.slice(0, 50) }));
if (issues.length > 50) console.log('指摘が50件を超えたため、先頭50件だけ表示しました');
}実行手順
1. 検証用スプレッドシートへ「出欠回答」シートを作ります。
2. A列とB列へ少量のサンプルを入力します。
3. Apps Scriptへコードを貼り、`auditAttendanceInputFree` を実行します。
4. 実行ログで件数、回答別集計、行番号と指摘種別を確認します。
5. 修正が必要な行は、人が元回答を確認してからシート上で直します。
失敗しやすい点と停止条件
- シートなし、回答行なし、500行超では停止します。
- 「出席」「○」などを勝手に「参加」へ変換しません。許可値は運用に合わせて明示的に変更してください。
- 同姓同名の判定や本人確認は行いません。
- 個人情報保護、勤怠、給与、労務上の判断には使わず、必要に応じて担当者や専門家へ確認してください。
- ログには氏名と回答本文を残しません。
公開前チェックリスト
- 元シートを更新・削除していない
- 自動メールや外部送信を行っていない
- ログに氏名を出していない
- 500行の停止条件がある
- 少量のコピー環境で確認した
まとめ
出欠集計は、合計を出す前に未入力と表記ゆれを分けて確認すると、数え直しを減らしやすくなります。まずは元データを変えないdry-runで指摘行だけを確認し、修正は回答内容を確かめた人が行ってください。
個人クリエイター公開準備チェックGAS Proを見る

GasおじのTips商品一覧を見る

※学習・検証用の例です。実データへ適用する前にコピー環境で確認してください。Google公式・Google公認の商品ではありません。
