共有ツールの表示件数を変えたら、同僚の画面まで同じ件数になってしまう場合は、設定の保存先を確認します。スクリプト全体で共有する設定と、その利用者だけの設定は分けて保存できます。
GASのUserPropertiesは、現在または実効的な利用者に対応した、スクリプト内の設定を扱います。APIキーのような共通設定を保存するScriptPropertiesと同じものではありません。ここでは個人向けの表示件数だけを保存する例を使います。
設定の値は文字列で保存される
PropertiesServiceはキーと値を文字列として保存します。20を入れても、読み出すときの値は文字列なので、計算や件数制限へ使う前に変換と範囲の検査が必要です。
未設定と不正な値も区別します。設定がなければ既定の20件を使いますが、保存値が"abc"なら設定の不備として止めます。何でも既定値へ戻すと、設定が無視された理由を利用者が追えなくなります。
保存先の違いとデータ形式は公式のProperties Serviceガイドで確認できます。共通のAPI設定はスクリプトプロパティの使い方と役割を分けます。
表示件数を読む・保存する・戻す
練習用の許容範囲は1〜100件です。文字列を数値へ変えるだけでなく、整数だけの文字が保存されているかを先に検査します。20件を20として読み進めることはしません。
function readPageSize(store) {
const raw = store.getProperty('practice.pageSize');
if (raw === null) return 20;
if (!/^[1-9]\d*$/.test(raw)) throw new Error('表示件数の設定を確認してください');
const value = Number(raw);
if (!Number.isSafeInteger(value) || value > 100) {
throw new Error('表示件数は1〜100です');
}
return value;
}
function savePageSize(store, value) {
if (!Number.isSafeInteger(value) || value < 1 || value > 100) {
throw new Error('表示件数は1〜100です');
}
store.setProperty('practice.pageSize', String(value));
}
function practiceUserSetting() {
const store = PropertiesService.getUserProperties();
console.log('変更前: ' + readPageSize(store));
savePageSize(store, 30);
console.log('保存後: ' + readPageSize(store));
}
function resetPracticeUserSetting() {
PropertiesService.getUserProperties().deleteProperty('practice.pageSize');
}
未設定からpracticeUserSettingを動かすと、変更前20、保存後30が想定されます。保存するのはpractice.pageSizeだけです。戻したい場合はresetPracticeUserSettingでそのキーを削除すると、次の読み取りは既定の20になります。ほかの設定を全削除する処理は使いません。
誰の設定になるかを確かめる
UserPropertiesの「利用者」を、ブラウザの閲覧者と常に同じだと思わないようにします。公式のPropertiesServiceは、現在または実効的な利用者の保存先として説明しています。
Webアプリが作成者として実行される構成では、閲覧者ごとに独立した設定になるかを、その実行条件で確認する必要があります。別アカウントで開いて設定を変えた際に、誰の値が保存され、どちらの画面へ影響するかを試してください。
カスタム関数にも固有の制約があります。セルから呼ぶ関数の中で、表示設定を変更するような動きへ広げる前に、使う実行方法に合う保存先かを確認します。画面と権限の関係はGASのWebアプリ化にもまとめています。
設定はデータ本体と分ける
表示件数のように失っても再設定できる値と、受付の完了状態や顧客データは役割が違います。ここで保存しているのは画面表示の設定だけです。機密情報を入れるかどうかは別の判断です。
ローカルでは代用の保存先で、未設定・保存後・不正文字・範囲外・初期化を確認しました。Google上での利用者の切り替わりや保存権限は未実行です。最初に共有用の本物のツールへ組み込まず、練習用プロジェクトでアカウントごとの動作を確かめてください。
