Propertyを用いて安全にGASを管理する
Date: 2021/05/16 15:26
Category: none
はじめに
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のアクセストークンを保存したときのことを記事にしようと思う。
まさき。です。PHPエンジニアをやってます。
自分の課題を技術で乗り越えるの好きかもしれないです。
フロントエンドは苦手ですが、少しでもできるようになれたらな、ということでNextJSでこのブログサイトを作りました。