ADVERTISEMENT

【Googleドキュメント】Apps Scriptで認証情報の安全管理!PropertiesServiceの使い方

【Googleドキュメント】Apps Scriptで認証情報の安全管理!PropertiesServiceの使い方
🛡️ 超解決

Googleドキュメントでアプリ連携や外部APIを利用する際、APIキーやパスワードなどの認証情報をスクリプト内に直接書いてしまうと、誤って共有したときに重大なセキュリティリスクが発生します。そんな問題を解決するのが、Apps ScriptのPropertiesServiceという機能です。この記事では、PropertiesServiceを使って認証情報を安全に保存・呼び出す方法を詳しく解説します。具体的なコード例とともに、実践的な管理テクニックも紹介しますので、ぜひ最後までお読みください。

【要点】PropertiesServiceで認証情報を安全に管理する方法

  • PropertiesService.getScriptProperties(): スクリプト全体で共有されるプロパティストアを使い、APIキーをコードから分離して管理します。
  • setProperty(key, value) と getProperty(key): 認証情報の保存と取得を簡単なメソッドで行い、スクリプトファイル内に直接記述するリスクを排除します。
  • deleteProperty(key) と getKeys(): 不要になった認証情報を削除したり、保存済みのキー一覧を確認することで、管理の手間を軽減します。

ADVERTISEMENT

PropertiesServiceの概要と認証情報管理の基本

PropertiesServiceは、Apps Scriptでキーと値のペアを保存できる永続的なストレージを提供します。認証情報だけでなく、設定値やユーザーごとのデータも管理できます。スクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの3種類があり、それぞれスコープが異なります。認証情報の保管には、スクリプト全体で共有されるスクリプトプロパティが最適です。スクリプトプロパティに保存したデータは、スクリプトエディタの「プロジェクトの設定」からも確認でき、スクリプトコードから完全に分離されます。これにより、スクリプトを共有しても認証情報が漏れる心配がなくなります。

PropertiesServiceを使った認証情報の保存と取得手順

認証情報を保存する方法

  1. スクリプトエディタを開く
    Googleドキュメントで、「拡張機能」→「Apps Script」をクリックしてスクリプトエディタを開きます。
  2. 保存用の関数を記述する
    以下のコードをスクリプトファイルに追加します。
    function saveApiKey() {
      var props = PropertiesService.getScriptProperties();
      props.setProperty('API_KEY', 'your_actual_api_key_here');
    }

    実際のAPIキーに置き換えて、この関数を一度だけ実行します。

  3. 関数を実行する
    エディタ上部の「実行」ボタンをクリックし、権限を承認して関数を実行します。実行後、プロパティストアにキーと値が保存されます。

認証情報を取得する方法

  1. 取得用の関数を記述する
    以下のコードで保存したAPIキーを安全に取得できます。
    function useApiKey() {
      var props = PropertiesService.getScriptProperties();
      var apiKey = props.getProperty('API_KEY');
      // 取得したapiKeyを使って処理を実行する
      Logger.log(apiKey);
    }
  2. スクリプト内で利用する
    実際のAPI呼び出しなど、必要な箇所でgetPropertyを使って認証情報を呼び出し、コード内に直接書かないようにします。

認証情報の更新と削除

  1. 更新する方法
    同じキーに対して再度setPropertyを実行すると、値が上書きされます。例えば、APIキーを変更する場合は、saveApiKey関数を新しいキーで再実行します。
  2. 削除する方法
    不要になった認証情報はdeletePropertyで削除します。
    function deleteApiKey() {
      var props = PropertiesService.getScriptProperties();
      props.deleteProperty('API_KEY');
    }
  3. 全キーを一覧表示する方法
    getKeysメソッドで保存されているすべてのキーを取得し、管理に役立てます。
    function listAllKeys() {
      var props = PropertiesService.getScriptProperties();
      var keys = props.getKeys();
      Logger.log(keys);
    }

認証情報管理の注意点とベストプラクティス

スクリプトプロパティの値は誰でも見られる可能性がある

スクリプトプロパティは、スクリプトの編集権限を持つユーザーであれば「プロジェクトの設定」から値を確認できます。そのため、完全な秘密情報とは言えません。アクセス権を信頼できるユーザーのみに制限し、必要に応じて定期的にキーをローテーションすることが重要です。

プロパティのサイズ制限に注意する

PropertiesServiceの各プロパティストアには、保存できるデータの合計サイズに制限があります(スクリプトプロパティは500KB)。大きなデータを保存しようとするとエラーが発生するため、認証情報のような小さなテキストデータのみを保存するようにしましょう。

値を直接コードに書かない習慣をつける

PropertiesServiceを使う最大のメリットは、認証情報をコードから分離できることです。コピー&ペーストでスクリプトを共有しても、認証情報が流出しません。開発時からこの習慣を徹底することで、セキュリティ事故を未然に防げます。

UserPropertiesとDocumentPropertiesの使い分け

認証情報がユーザーごとに異なる場合はUserProperties、ドキュメント固有の場合はDocumentPropertiesを検討します。ただし、スクリプトプロパティが最もシンプルで一般的な用途に適しています。用途に応じて適切な種類を選びましょう。

ADVERTISEMENT

PropertiesServiceの3種類のプロパティ比較

プロパティの種類 スコープ 主な使用例
ScriptProperties スクリプト全体で共有 APIキー、共通設定値
UserProperties ユーザーごとに独立 各ユーザーのアクセストークン
DocumentProperties ドキュメントごとに独立 特定のドキュメントの設定

まとめ

PropertiesServiceを使えば、APIキーやパスワードをスクリプトコードから安全に分離して管理できます。この記事では、setPropertyとgetPropertyを使った保存と取得の基本手順、更新や削除の方法、さらに注意点とベストプラクティスを解説しました。実際のプロジェクトでは、まず最初に認証情報をPropertiesServiceに保存する関数を作成し、その後はコード内でgetPropertyを使って呼び出すようにしてください。応用として、UserPropertiesを使ったユーザーごとのトークン管理や、定期的なローテーションを自動化するトリガーの設定も検討してみましょう。安全なスクリプト開発を実現するために、ぜひ今日から実践してみてください。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。