はじめに
GASで以下のようなQiitaの集計botを作成したことがあります。
その際、QiitaAPIなどのトークンを使用する時、ソースに直書きしていました。
しかし、こういった重要な情報をソースに直接書くのはよろしくないと思い、調べてみたところ「プロパティサービス」で保存するのがいいとのことだったのでプロパティサービスについて簡単にまとめます。
プロパティサービス
プロパティサービスを使用すると、 1つのスクリプト、スクリプトの1人のユーザー、またはアドオンが使用されている1つのドキュメントを対象とするキーと値のペアで単純なデータを保存できます。これは通常、開発者の構成またはユーザー設定を保存するために使用されます。プロパティがスクリプト間で共有されることはありません。
簡単に説明すると、プロパティストアと呼ばれるデータを保存する場所があり、プロパティサービスを使ってプロパティストアからデータをセットしたり取得したりできるといった内容。
全てのデータはキーと値のペア文字列
として保存されます。
文字列ではないデータ型は自動的に文字列に変換されるとのことです。
PropertiesServiceの3つのアクセス権
使用するメソッドによって、アクセス権が異なります。
なので用途にあったメソッドを使う必要があります。
- getScriptProperties():スクリプト、アドオン、Webアプリの全てのユーザ
- getUserProperties():スクリプト、アドオン、Webアプリの現在のユーザ
- getDocumentProperties():開いているドキュメント内のアドオンの全てのユーザ
データの登録
データの登録方法は、スクリプトから登録する方法と手動で登録する2パターンあります。
スクリプトから登録する
ここでは、getUserProperties()のアクセス権限での例を記載します。
ストアに1つのkeyとvalueのペアを登録するには、setProperty(key, value)
を使用します。
//スクリプトの現在のユーザのみがアクセスできるプロパティストアオブジェクトを取得
var userProperties = PropertiesService.getUserProperties();
//setProperty()でkeyとvalueをセットします。
userProperties.setProperty('test', 'hogehoge');
//プロパティストアから取得
userProperties.getProperty('test'); //結果 hogehoge
もし複数のペアを一度に登録したい場合は、setProperties(properties)
でできます。
引数は登録したいkeyと値を記述したオブジェクトです。
var userProperties = PropertiesService.getUserProperties();
var newProperties = {nickname: 'Bob', region: 'US', language: 'EN'};
userProperties.setProperties(newProperties);
手動で登録する
GASのエディタから登録することができます。
※どうやら新しいエディタからではできないらしいので旧エディタにしてから行います。
旧エディタのファイル>プロジェクトのプロパティを開きます。
画像のように「スクリプトのプロパティ」タブで、行を追加しそこにプロパティ(key)、値(value)を記述して保存するだけです。
参考