はじめに

普段GASでいろいろ作るんですが、スクリプトファイル横断して同じ値を使いたいときありますよね?
GitHubのIDとかAWSのアクセスキーとかとか。環境変数的な。

これUserPropertiesで実現できるんですが、現在は非推奨になっていて使えません。。どうすればいいですか?

おいおい、いまはPropertiesServiceってのがあって、getUserProperties()で使えるぜ! っていうそこのあなた!もう少々お付き合いください。

実はこれ別物なんです。

ユーザープロパティは2種類ある!?

スクリプトのメニューから、
ファイル→プロジェクトのプロパティ→「ユーザープロパティ」タブ

f:id:aoma23:20190325180058p:plain
ユーザープロパティ

ここでhoge=user_hogeを設定します。

こちら、UserPropertiesでは取得できますが、PropertiesServiceでは利用できません。

  Logger.log(UserProperties.getProperty('hoge')); // user_hoge
  Logger.log(PropertiesService.getUserProperties().getProperty('hoge')); // null

また、UserPropertiesは別スクリプトでも利用できますが、PropertiesService.getUserProperties()はこのスクリプト内のみとなっています。

名前は似てるっていうか同じなのに全くの別物!!

まとめ

ユーザープロパティには2種類ある。

UserProperties PropertiesService.getUserProperties()
エディタから編集 できる できない
スクリプトで参照 できる できない
用途 開発者用の環境変数として スクリプトの実行ユーザー毎の設定値として
その他 非推奨

Stack Overflowでも代替はPropertiesServiceだぜって言われちゃってるし、

このプロパティが本当に非推奨になったのなら、画面からも消して欲しい。。

どなたか詳しい方いませんか??

Updated: