LoginSignup
13
9

More than 1 year has passed since last update.

GASでトークン等を保存しておけるプロパティサービスについてまとめてみた

Posted at

はじめに

外部APIなどを利用するとき、アクセストークンやシークレットキー、他にもユーザのIDなど、個人の情報が必要になる時があると思います。これらの情報を他人が見えるような場所に書いておくのは、セキュリティの観点から危険です。

Google Apps Script(以後、GAS)では、そういった情報をプロパティサービスという機能を使って、他人には見えないような形で保存しておくことが可能です!今回は、そのプロパティサービスについてまとめていきます!

今回まとめている情報は、GASの公式ガイド、ドキュメントをもとに記載しています。

GASでトークン等を保存しておけるプロパティサービスについてまとめてみた

そもそもプロパティサービスとは

プロパティサービスとは、特定の情報をkeyvalueのペアで保存しておける機能のことです。アクセストークンなど、コードに直接記載しないほうがよい情報を保存をしておくのに便利です。

プロパティは3種類あります。

  • スクリプトプロパティ
    • 特定のスクリプトからのみアクセス可能なプロパティで、すべてのユーザがアクセス可能
    • アプリケーション全体に関わる情報を保存するのに適している
  • ユーザープロパティ
    • 特定のスクリプトからのみアクセス可能なプロパティで、カレントユーザーのみアクセス可能
    • ユーザ特異の情報を保存するのに適している
  • ドキュメントプロパティ
    • 開いているドキュメント、スプレッドシート、フォームからアクセス可能なプロパティで、すべてのユーザがアクセス可能
    • 埋め込みのチャートのURLなど、ドキュメント特異の情報を保存するのに適している

IDEで管理する

スクリプトプロパティのみにはなりますが、GASのIDE上で追加・編集・削除が可能です。

まずはGASのIDEにアクセスして、左サイドバーの一番下にある歯車マークをクリックします。
スクリーンショット 2022-10-23 10.54.13.png

プロジェクトの設定という画面になるので、その画面の一番下にあるスクリプト プロパティというセクションで設定が可能です。
スクリーンショット 2022-10-23 10.55.03.png

プロパティを追加した後にプロパティを編集・追加したい場合はスクリプト プロパティを編集をクリックして、編集・追加を行います。
スクリーンショット 2022-10-23 10.55.41.png

追加したスクリプトプロパティを利用する場合は、以下のようなコードで読み取ることが可能です。

const scriptProperty = PropertiesService.getScriptProperties().getProperty('KEY');
Logger.log(scriptProperty); // VALUE

コードで管理する

プロパティはコード上で追加、編集、読み取り、削除が可能です。

プロパティを追加する場合は、Properties.setProperty(KEY, VALUE)というメソッドを使うことで実現可能です。もうすでに存在するプロパティを編集する場合も、こちらのメソッドを使用して実現することができます。

プロパティの種類によって若干コードが異なるので、種類ごとに記載します。

プロパティを追加する
// スクリプトプロパティの場合
PropertiesService.getScriptProperties().setProperty('SCRIPT_PROPERTY_KEY', 'script_property_value');

// ユーザープロパティの場合
PropertiesService.getUserProperties().setProperty('USER_PROPERTY_KEY', 'user_property_value');

// ドキュメントプロパティの場合
PropertiesService.getDocumentProperties().setProperty('DOCUMENT_PROPERTY_KEY', 'document_property_value');

プロパティを読み取る場合は、Properties.getProperty(KEY)というメソッドを使うことで実現可能です。

プロパティを読み取る
// スクリプトプロパティの場合
const scriptProperty = PropertiesService.getScriptProperties().getProperty('SCRIPT_PROPERTY_KEY');
Logger.log(scriptProperty); // => script_property_value

// ユーザープロパティの場合
const userProperty = PropertiesService.getUserProperties().getProperty('USER_PROPERTY_KEY');
Logger.log(userProperty); // => user_property_value

// ドキュメントプロパティの場合
const documentProperty = PropertiesService.getDocumentProperties().getProperty('DOCUMENT_PROPERTY_KEY');
Logger.log(documentProperty); // => document_property_value

プロパティを削除する場合は、Properties.deleteProperty(KEY)というメソッドを使うことで実現可能です。また各種類のプロパティをすべて削除する場合は、Properties.deleteAllProperties()で実現することが可能です。

プロパティを削除する
// スクリプトプロパティの場合
PropertiesService.getScriptProperties().deleteProperty('SCRIPT_PROPERTY_KEY'); // 特定のプロパティを削除する
PropertiesService.getScriptProperties().deleteAllProperties(); // すべてのプロパティを削除する

// ユーザープロパティの場合
PropertiesService.getUserProperties().deleteProperty('USER_PROPERTY_KEY'); // 特定のプロパティを削除する
PropertiesService.getUserProperties().deleteAllProperties(); // すべてのプロパティを削除する

// ドキュメントプロパティの場合
PropertiesService.getDocumentProperties().deleteProperty('DOCUMENT_PROPERTY_KEY'); // 特定のプロパティを削除する
PropertiesService.getDocumentProperties().deleteAllProperties(); // すべてのプロパティを削除する

さいごに

今回はGASのプロパティサービスについてまとめました!トークンなどがだいぶ管理しやすくなるので、ぜひ使ってみてください!

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9