Propertyを用いて安全にGASを管理する

May 16, 2021

はじめに

GASでは、APIを叩くことでChatworkやAWSなどの外部アプリとの連携が容易にできる。GASでAPIを叩く場合もアクセストークンを必要とし、なんらかの方法でGASに書き込んであげる必要がある。 ただし、AWSのアクセストークンなんかを直接GASのコードにハードコーディングしてgithubにpushでもすれば、即座にボットに回収され悪用されかねない。そこで、ソースとは別なところにトークンを保存し呼び出すということを行う。それがGASが提供しているPropertyである。

Propertyとは…

詳細はここを参考にしてもらえればいいと思うが、key-value形式でスクリプトごとやユーザーごと、ドキュメントごとに値を保存することができる仕組みである。

今回は、スクリプトごとにアクセストークンなどのソースコードにハードコーディングしたくないものを保存する用途で用いる。

以下のような処理を実行することでkey,valueが保存される。(既にkey,valueの組みがあれば更新)

let props = PropertiesService.getScriptProperties()
props.setProperty('key', 'value')

保存されているkey,valueを取得する場合は以下のようにするだけである。

let props = PropertiesService.getScriptProperties()
let value = props.getProperty('key')

そのほか削除などもできる。

ここで設定された値は、以前のバージョンのGASのエディタであれば ファイル > プロジェクトのプロパティ から確認可能であったが、新しいエディタではセットされている値をgetProperties()などで取得して確認するしかなさそうである。

旧エディタでは設定値が確認できた

まとめ

アクセストークンなど、ハードコーディングしたくないもの、スクリプトごとに値を変えたいものは、Propertyを使うとよい。 key,valueストア形式なため気軽に利用できる。githubなどでGASのコードを公開するときは必須だと思う。 これのAWS版がSecretManagerで、こっちはアクセストークンのローテーションなども可能である。後でfitbitのアクセストークンを保存したときのことを記事にしようと思う。


Written by Blackcat ひよっこエンジニア, いつかは自分でサービスを作りたいとずっと言ってる Twitter