第7回 complete
================

対応記事:
GASで重複しない受付番号を作る｜PropertiesServiceとLockService

含まれるファイル:
- Code.gs
- index.html
- style.html
- script.html

完成状態:
第6回までの入力フォームに加えて、PropertiesServiceとLockServiceを使った
日付別連番による受付番号の自動採番機能が追加されています。
GASからは受付番号を含む結果を返しますが、画面には第6回までと同じ「登録しました。」と表示されます。受付番号は作業依頼シートのB列で確認できます。

追加された主な機能:
- getNextReceiptNumber_() : LockServiceで排他制御しながら、PropertiesServiceに保存した
  日付別の連番を取得し、YYYYMMDD-001 形式の受付番号を発行します。
- saveRequest() : データ登録時、自動採番した受付番号を作業依頼シートのB列へ保存します。

動作確認:
1. setupAppSheets を実行し、各シートを作成します。
2. 採番だけを確認する場合は、テスト用プロジェクトで getNextReceiptNumber を実行します。ログに番号が出力されますが、実行ごとに採番カウンターが進み、シートには行を追加しません。
3. Webアプリ画面を開きます。
4. 顧客、件名、依頼内容を入力して登録します。
5. 画面に「登録しました。」と表示されることを確認します。
6. 作業依頼シートのB列に受付番号が記録されていることを確認します。
7. 複数回登録して、採番番号が前回から1つずつ増えることを確認します。

よくあるエラー:
- 「他の処理が実行中です」→ ロックを最大5秒待っても取得できない場合に発生します。少し待ってから再試行してください。
- 日付が変わると連番がリセットされ、001から採番されます。

注意:
- 受付番号の採番情報はScript Propertiesに保存されます。同じスクリプトで使い回す場合は
  前回の番号から続けて採番されます。
- 採番情報はシートの既存行から自動で復元されません。既存データがある状態で開始したり、採番用プロパティを削除したりすると番号が重なる可能性があるため、テスト環境で確認してください。
- 番号をプロパティへ保存した後にシート書き込みが失敗すると、その番号は欠番になります。
- テスト時は、Script Properties を初期化したい場合、Apps Scriptエディタの
  プロジェクト設定から削除できます。既存番号と重ならないよう、削除はテスト環境で行ってください。
- メール送信はまだ行いません。
