Properties ServiceでGASの設定情報を安全に管理する方法

GAS設定セキュリティ
Properties ServiceでGASの設定情報を安全に管理する方法のサムネイル

こんにちは、GASおじです。中小企業の経営者やフリーランスの皆さん、Google Apps Script(以下GAS)を使うとき、APIキーや設定情報の管理で困っていませんか?設定情報をスクリプト内にベタ書きするとセキュリティリスクが高まるし、スプレッドシートに保存すると誤操作で消えたり、誰でも見られてしまう可能性があります。

そこで今回は、GASの「Properties Service」を使った設定情報の安全な管理方法をおじさん流に解説します。SaaS課金に厳しいおじさんがオススメする、追加料金なし、Googleアカウントの利用枠内で行う安全管理ですよ。


Properties Serviceとは?初期設定と必要権限

Properties ServiceはGASに標準で備わっているキー・バリュー型の保存領域です。スクリプトプロジェクト単位、ユーザー単位、ドキュメント単位の3種類があり、用途に応じて使い分けます。APIキーやトークンなどの設定情報をコードから分離して、外部に漏れにくく管理できます。

初期設定

特別な設定は不要で、GASプロジェクトに標準で利用可能です。GASエディタからスクリプトを書くだけで使えます。

必要権限

Properties Serviceの操作はスクリプトの実行権限内で行われます。例えばスクリプトがGmailやスプレッドシートの読み書きをする場合は、それらの権限承認が必要です。設定情報の読み書き自体は追加権限不要ですが、ユーザープロパティを使う場合は実行ユーザー単位の保存になります。


安全に設定情報を管理するポイント

  1. 設定情報は必ずProperties Serviceへ保存し、スクリプト内にベタ書きしない。
  2. 既存の設定を消し去るのではなく、入力検証とバッチ処理で安全に更新する。
  3. 削除APIは使わず、バックアップやロールバックの仕組みを用意する。
  4. 設定は新規の日時付きシートやファイルに書き出し、既存データの上書きを避ける。

コード例:Properties Serviceで設定情報の安全な保存と更新

以下は例としてAPIキーをProperties Serviceに保存・更新し、バックアップとして新規の日時付きスプレッドシートに記録するコードです。既存の設定を消すのではなく、入力値を検証してから一括更新(バッチ書き込み)します。

function updateSettings(newSettings) {
  // 1. 入力検証(APIキーは文字列かつ16文字以上と仮定)
  if (!newSettings.apiKey || typeof newSettings.apiKey !== 'string' || newSettings.apiKey.length < 16) {
    throw new Error('無効なAPIキーです。');
  }
  if (!newSettings.endpoint || typeof newSettings.endpoint !== 'string') {
    throw new Error('無効なエンドポイントです。');
  }

  const userProps = PropertiesService.getScriptProperties();

  // 2. 現在の設定を取得しバックアップ用のシートへ書き出し
  const currentSettings = userProps.getProperties();
  backupSettings(currentSettings);

  // 3. バッチでまとめて書き込み(更新)
  userProps.setProperties({
    'API_KEY': newSettings.apiKey,
    'ENDPOINT': newSettings.endpoint
  });

  Logger.log('設定情報を更新しました。');
}

function backupSettings(settings) {
  // 現在日時を取得して新規シート名に利用
  const timestamp = new Date().toISOString().replace(/[:\-T]/g, '').slice(0, 14);
  const ss = SpreadsheetApp.create('SettingsBackup_' + timestamp);
  const sheet = ss.getActiveSheet();

  sheet.appendRow(['キー', '値']);
  for (const key in settings) {
    sheet.appendRow([key, settings[key]]);
  }
  Logger.log('バックアップを作成しました:' + ss.getUrl());
}

このコードのポイントは、

  • 入力値の検証を必ず行ってから更新すること。
  • 既存設定は消さずにバックアップを新規スプレッドシートとして作成すること。
  • 一つずつ書き込むのではなくsetPropertiesでまとめて更新して効率化。

個人情報の取り扱いと復元手順

Properties ServiceはGoogleアカウントの利用枠内で保存されるため、外部に漏れるリスクは低いですが、設定情報に個人情報や機密データを含める場合は十分注意してください。アクセス権限を管理し、不要になった設定は手動で更新・管理しましょう。

復元手順

  1. バックアップ用スプレッドシートのURLを控えておく。
  2. 万一設定情報を誤って更新してしまった場合、バックアップシートから値をコピー。
  3. GASのProperties Serviceに再度setPropertiesで書き戻す。

コスト削減の仮定と計算式

GASのProperties ServiceはGoogleアカウントの利用枠内で追加の専用SaaS料金なしで使えます。ただしApps Scriptのquota(実行回数や処理時間の上限)がありますので、大量データの保存には向きません。

仮に専用SaaSで設定管理を外部に委託した場合、月額5000円かかるとします。GASのProperties Serviceで同等の管理を行えば、

  • 年間コスト削減額 = 5000円 × 12ヶ月 = 60,000円

となります。


まとめ

  • Properties ServiceはGAS標準の安全な設定管理ツール。
  • 入力検証・バッチ更新・バックアップで事故を防ぐ。
  • 既存データを消さずに新規ファイルへバックアップする運用が安心。
  • 追加のSaaS料金なし(Googleアカウント利用枠内)でコスト削減可能。
  • 個人情報は取り扱いに注意し、復元手順を用意。

GASおじラボでは、こうしたGAS活用のコツをわかりやすく紹介中。もっと便利なツールやノウハウを知りたい方は、ぜひメンバーシップへどうぞ!

GASおじラボで500ツール使い放題 →