求職者書類の消し忘れ防止（スプレッドシート＋Googleドライブ版）設定ガイド　配布版 1.0

■ できること
・管理表（Googleスプレッドシート）に、求職者ごとの「状態」「基準日」「書類フォルダのURL」を書いておく。
・毎週、GASが管理表を読み、保存期間を過ぎた書類を一覧にしてメールで知らせる。
・慣れてきたら、担当者が「消してOK」にチェックした書類だけを、ゴミ箱に移すようにもできる（MODE=trash）。
・ゴミ箱に移したものは、30日以内なら元に戻せる。このコードは「完全に削除」はしない。

■ 消してはいけないもの（必ず読む）
・有料職業紹介事業者の帳簿（求人求職管理簿・手数料管理簿）は、決められた期間（2年）の保存が必要です。管理表には載せないでください。
・請求書・領収書など、会計や税金の書類も保存期間があります。管理表には載せないでください。
・このコードは、念のためフォルダ名に「管理簿」「帳簿」「台帳」が入っているものはゴミ箱に移しません。

■ 準備するもの
1) Googleドライブに、求職者の書類をまとめる親フォルダを1つ作る（例：「求職者書類」）。その中に、求職者ごとのフォルダを作る。
2) Googleスプレッドシートを1つ作り、1枚目のシート名を決める（例：「書類の管理表」）。1行目に次の見出しを、この順番どおりに入れる。
   管理ID｜求職者｜状態｜基準日｜書類フォルダのURL｜消す予定日｜状況｜消してOK｜処理日
   ・「求職者」は、名前ではなくイニシャルなどでもかまいません（お知らせのメールに載ります）。
   ・「基準日」は、その状態になった日（選考が終わった日、入社した日など）。日付として入れる。
   ・「消してOK」の列は、チェックボックスにする（列を選んで「挿入」→「チェックボックス」）。
   ・「消す予定日」「状況」「処理日」はGASが書き込むので、空けておく。
3) 保存期間を決める。状態ごとに「基準日から何か月残すか」を、社内で決めて書き出す（個人情報適正管理規程などに合わせる）。
   例：選考終了 6か月／辞退 6か月／連絡なし 12か月／入社 12か月（返金の対象になる期間などを考えて決める）
   ※これは例です。法律で一律に決まった期間はありません。

■ 設定（GASのスクリプトプロパティ）
GASのエディタ左の「プロジェクトの設定」→「スクリプト プロパティ」で、次を追加する。
・SHEET_ID：管理表のURLの /d/ と /edit の間の文字
・SHEET_NAME：管理表のシート名（例：書類の管理表）
・ROOT_FOLDER_ID：親フォルダのURLの /folders/ の後ろの文字。この親フォルダの中にあるフォルダしか、ゴミ箱に移しません
・NOTIFY_EMAIL：お知らせを送るメールアドレス
・RETENTION_MONTHS：状態ごとの保存期間（月）。例：{"選考終了":6,"辞退":6,"連絡なし":12,"入社":12}
  ※管理表の「状態」の言葉と、まったく同じ書き方にする
・MODE（任意）：最初は書かない（＝notify：お知らせだけ）。ゴミ箱に移すところまで自動にするときだけ trash にする

■ 動かし方
1) 新しいGASプロジェクトを作り、DataCleanup.gs（または同じ内容の DataCleanup.txt）の中身を全部貼り付けて保存。
2) 関数「checkSetup」を選んで実行。最初は権限の許可を求められるので、自分のアカウントで許可する。
   ログに「PASS」と出ればOK。
3) テスト用の行を1行入れて、関数「weeklyCleanup」を実行する。
   ・まずは架空の求職者のテスト用フォルダで試す（基準日を1年前などにすると、期限切れの動きを確かめられる）
   ・「消す予定日」と「状況」が入り、期限切れならお知らせのメールが届くことを確認する
4) 左の「トリガー」→「トリガーを追加」→ 関数 weeklyCleanup、時間主導型、週ベースのタイマー（例：毎週月曜の午前9〜10時）。
5) 慣れてきたら、MODE を trash にする。担当者が「消してOK」にチェックした行だけ、次の実行でゴミ箱に移ります。
   先に、テスト用のフォルダで1回試してください。

■ 安全のための決まり（コードに入っているもの）
・完全には削除しない（ゴミ箱に移すだけ。30日以内なら戻せる）
・お知らせだけのモード（notify）では、何も移さない
・「消してOK」にチェックがない行は移さない。期限前の行も移さない
・親フォルダ（ROOT_FOLDER_ID）の外のフォルダは移さない
・フォルダ名に「管理簿」「帳簿」「台帳」が入っていたら移さない
・1回の実行で移すのは20フォルダまで。見る行は200行まで
・自分がオーナーでないフォルダは、ゴミ箱に移せない（エラーとして管理表に表示）

■ うまくいかないとき
・「○○ が未設定です」→ スクリプトプロパティを確認
・「1行目の見出しが違います」→ 見出しの文字と順番を確認（全角・半角も）
・「保存期間が未設定です」→ RETENTION_MONTHS に、その状態の言葉を足す
・「基準日を日付で入れてください」→ 基準日のセルを日付にする
・「ゴミ箱に移せませんでした」→ そのフォルダのオーナーか、URLがフォルダのURLかを確認
・メールが来ない → 期限切れの行がなければ、メールは送りません。Gmailの迷惑メールも確認

■ 確認の範囲
・Node.js の模擬テスト（tests.cjs、21件）と、Googleの実際の環境（架空のテスト用の管理表・フォルダ、2026-10-16）で動きを確認しています。
  確認したこと：設定の確認／お知らせだけのモードで期限切れを一覧にしてメールが届く／チェックがあっても移さない／ゴミ箱に移すモードで「消してOK」の行だけ移る／チェックなしの行は移さない／親フォルダの外のフォルダは移さない／消す予定日の計算
・使う方の環境でも、最初は必ずテスト用のフォルダから試してください。
