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を使った認証情報の保存と取得手順
認証情報を保存する方法
- スクリプトエディタを開く
Googleドキュメントで、「拡張機能」→「Apps Script」をクリックしてスクリプトエディタを開きます。 - 保存用の関数を記述する
以下のコードをスクリプトファイルに追加します。function saveApiKey() { var props = PropertiesService.getScriptProperties(); props.setProperty('API_KEY', 'your_actual_api_key_here'); }実際のAPIキーに置き換えて、この関数を一度だけ実行します。
- 関数を実行する
エディタ上部の「実行」ボタンをクリックし、権限を承認して関数を実行します。実行後、プロパティストアにキーと値が保存されます。
認証情報を取得する方法
- 取得用の関数を記述する
以下のコードで保存したAPIキーを安全に取得できます。function useApiKey() { var props = PropertiesService.getScriptProperties(); var apiKey = props.getProperty('API_KEY'); // 取得したapiKeyを使って処理を実行する Logger.log(apiKey); } - スクリプト内で利用する
実際のAPI呼び出しなど、必要な箇所でgetPropertyを使って認証情報を呼び出し、コード内に直接書かないようにします。
認証情報の更新と削除
- 更新する方法
同じキーに対して再度setPropertyを実行すると、値が上書きされます。例えば、APIキーを変更する場合は、saveApiKey関数を新しいキーで再実行します。 - 削除する方法
不要になった認証情報はdeletePropertyで削除します。function deleteApiKey() { var props = PropertiesService.getScriptProperties(); props.deleteProperty('API_KEY'); } - 全キーを一覧表示する方法
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ドキュメントの人気記事ランキング
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】罫線を縦・横に挿入する方法!Wordの罫線機能との比較
- 【Googleドキュメント】共有後に閲覧履歴を確認!誰がいつ開いたかの追跡
- 【Googleドキュメント】共有先の名前が表示されない時の対処!匿名動物アイコンの正体
