lisz-works

プログラミングと興味を貴方に

Google Apps Scriptのプロパティで安全に値を使う!ユーザープロパティとスクリプトプロパティ

【スポンサーリンク】

Google Apps Script

Google Apps Scriptの2つのプロパティ設定

  1. ユーザプロパティ
  2. スクリプトプロパティ

の設定方法と使い方についてです!

プロパティって?

簡単にいうとプロジェクトなどの内部に保存しておける値です。

任意の「プロパティ名」に対応した「値」を設定しておくことで
ソース上では、「このプロパティ名の値くれ!」とすることで、設定しておいた値を取得できます。

つまりソースコード上には、値を書かなくていいわけです。

なので例えば、ソースを他の人がコピペしたとします。
ソース上の変数だと、ソースを修正しないといけませんよね。

しかしプロパティなら、同じプロパティ名設定して、各個人が違う値を設定すれば、ソースはいじらずに済みます。
またソース上で見せておきたくないような情報なんかも、直接書かずに済みます。

ステキですね!

プロパティの種類

Google Apps Scriptのプロパティは

  1. ユーザープロパティ
  2. スクリプトプロパティ

の2種類あります。

ユーザプロパティ

自分のみ見ることができるプロパティです。

どのスクリプトからも見れるプロパティです。

プロジェクトAで設定したプロパティは、プロジェクトBでも参照できます。

スクリプトプロパティ

スクリプトプロパティは、「このプロジェクトが見られる人」なら誰でも見えてしまうプロパティです。

なので共有で共同編集しているような場合、このプロパティの値は見えてしまいます。

ただし製作者でないと編集や削除はできません!

なので「このプロジェクトで必要な値」をセットしておくことで、同じ設定値を使うことができます。

プロパティの設定方法

「ファイル→プロジェクトのプロパティ」を選択。

プロジェクトのプロパティ

ここでまだプロジェクト名付けて保存していない場合、プロジェクト名付けるよう要求されるので付けましょう!

「プロジェクトのプロパティ」が開いたら、この2つのタブがターゲットです。

  • ユーザープロパティ
  • スクリプトプロパティ

例:ユーザプロパティを開く

対象のプロパティのタブを開いて、値を入力しましょう。

例:ユーザプロパティを設定

今回は例として、このように入力。

プロパティ種別 プロパティ名
ユーザープロパティ TestUserProperty 1000
スクリプトプロパティ TestScriptProperty 2000

そして「保存ボタン」を押す。

スクリプトからプロパティを参照する

プロパティを参照するには、このようなスクリプトを書きます。
この例では、参照した値を直接Logger.log()に渡してログ出力しています。

function myFunction() {
  Logger.log(UserProperties.getProperty('TestUserProperty'));
  Logger.log(ScriptProperties.getProperty('TestScriptProperty'));
}

実行ボタンを押して、ログを開いてみましょう*1

実行ログに設定値が出力される

1000と2000が順番に表示されていますね!
成功です!

別のプロジェクトからプロパティを見てみる

ここで別のプロジェクトを適当に作ってみましょう。

別プロジェクト

そしてプロパティの設定を見てみます。

ユーザープロパティはある!

ユーザプロパティ

スクリプトプロパティはありません!

スクリプトプロパティ

別プロジェクトから見るユーザプロパティ

この通り、ユーザープロパティは「自分が見れるもの」。

なので、プロジェクトの壁もなく見えてしまいます。

なので命名ルールをちょっと考えないといけないですね。

例えば

  • Web APIを使うための、API Keyを保存
  • TwitterのAPI Keyを保存するのに「API_KEY」という名称で保存
  • 他のWeb APIを使いたい!となった……

……困りますよね?

別プロジェクトから見るスクリプトプロパティ

対してスクリプトは「このプロジェクトで見れるもの」。

なので、他のプロジェクトには影響しません。

ただし前述しましたが、他のユーザからも見えてしまうので、取扱には注意が必要です。

なのでユーザプロパティで例に出した、API Keyなんかは、スクリプトプロパティに保存するのは得策ではないですね。

ざっくりとした使い分け案

この2つは例えば、このように使うと良いかと思います!

プロパティ種別 使い方
ユーザープロパティ セキュリティ的に必要なもの
スクリプトプロパティ アプリ上で必要な固定値(何かの初期値とか)

プロパティの注意点

ユーザプロパティを使用すると、このようなワーニングが表示されます。

UserProperties API のサポートは終了しています。

ScriptProperties API のサポートは終了しています。

しかしググってみても代替手段が特に見つからない……

ワーニング表示されているだけで、今の所使えるので、ひとまずは大丈夫かとは思います。

ただし、そのうち同じ方法では使えなくなるかもしれませんので、予めご了承くださいませ。

※2018.06.29現在

参考

こちらを参考にしました。ありがとうございました。

osumik.blog.fc2.com

*1:Ctrl+Enter