みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者向けGoogle Apps Script入門として名言Botの作り方をお伝えしています。
前回の記事はコチラ。
インストーラブルトリガーを使って一定時間ごとにスクリプトを実行する方法についてお伝えしました。
さて、Botとしては完成と言っても良いのです。
ただ、APIトークン…コード内にベタ打ちしたくないですもん。
GASには、そういう取り扱い注意なやつを、いい感じに管理するプロパティストアという機能があるんです。
今回は、Google Apps Scriptのプロパティストアとは何か、またスクリプトプロパティの入力の方法についてお伝えします。
では、行ってみましょう!
プロパティストアとプロパティサービス
プロパティストアとは
GASではプロジェクトやドキュメントに紐付いてデータを格納しておくコードとは別の領域が用意されていて、それをプロパティストアといいます。
プロパティストアには、キーの役割を果たす「プロパティ」と「値」のペアを文字列形式で格納することができます。
ちょっとGASとかJavaScriptに詳しい方なら、オブジェクトと同じような形式だと気づくでしょう。
プロパティストアに格納するデータの例
で、どんなデータを格納すると良いかというと、例えば、現在連載中の名言BotのスクリプトでいうとAPIトークン。
記事内には「ここにAPIトークンを入力してください」ってしていたんですけど、全世界に晒すわけにはいかない、とっても厳重注意のやつですもん。
ブログ書いてなくても、うっかりコピペして晒してしまったりとかあるかも知れませんよね。
ってことは、コード内にベタで書きたくないわけです。
APIトークン以外にも、あとは
- スクリプト内で使用するスプレッドシートやファイルのID
- Gmailでメールを送信するメールアドレス
- 外部のデータベースに接続するための情報
といった情報も同様にベタ書きしたくないです。
こういったデータをコードではない管理しやすいところに保管することができる、その場所がプロパティストアというわけです。
プロパティストアの種類
プロパティストアには3つの種類があります。
以下表にまとめました。扱うデータの性質や用途によって、どれを使うかセレクトをします。
プロパティストア | 場所 |
---|---|
スクリプトプロパティ | プロジェクト |
ユーザープロパティ | プロジェクト×ユーザー |
ドキュメントプロパティ | ドキュメント |
いずれの場合も、後述する方法でGASのスクリプトから操作をします。
プロパティサービスとは
そして、そのプロパティストアのデータをGASから操作することができ、それがプロパティサービスです。
プロパティストアに登録してあるデータをプロパティをキーにして取得してきたり、またはデータの入力や編集をしたりといったことが可能です。
スクリプトプロパティにデータを格納する
プロパティストアにはいくつか種類がありますが、今回はプロジェクトにひもづく形でデータを保管できるスクリプトプロパティについてお伝えします。
練習として、Chatwork APIのトークンをスクリプトプロパティとして格納してみましょう。
スクリプトプロパティに格納するには、以下のようなコードを実行します。
function setScriptProperty() {
PropertiesService.getScriptProperties().setProperty('CW_TOKEN', 'ここにAPIトークンを入力してください');
}
実行すると、特に何も起きずに実行完了するように見えますが、ちゃんとスクリプトプロパティにAPIトークンがデータとして格納されているので安心してください。
プロパティストアとPropertiesServiceオブジェクト
では、解説していきましょう。
これまでお伝えしてきたスプレッドシートを操作する機能は、Spreadsheetサービスでしたね。
GASではプロパティストアを扱うために、Propertiesサービスという機能が提供されています。
その機能を使って、スクリプトプロパティのデータを格納したり、取り出したりすることができるのです。
それで、Propertiesサービスを使用する場合には、まずPropertiesServiceオブジェクトからアクセスをすることになります。
これがPropertiesサービスの最も上位にあるオブジェクトで、トップレベルの親分的なオブジェクトです。
スプレッドシートでいうと、SpreadsheetAppがそれに当たります。
スクリプトプロパティをPropertiesオブジェクトとして取得
プロパティストアはPropertiesオブジェクトとして取得することで操作ができます。
前述のとおり、プロパティストアにはいくつかの種類がありますので、その種類ごとにメソッドが異なります。
スクリプトプロパティを操作するためのPropertiesオブジェクトを取得するには、getScriptPropertiesメソッドを使います。
スクリプトプロパティにキーを指定して値を格納する
これで、スクリプトプロパティをPropertiesオブジェクトとして操作ができるようになりましたので、そこにデータを格納します。
そのためのメソッドがsetPropertyメソッドです。
書式はコチラです。
今回の例では、キーは「CW_TOKEN」という文字列ですね。
そのキーに対となる値として、Chatwork APIのトークンを格納したというわけです。
そして、それはプロジェクトに紐づくスクリプトプロパティに削除するまでは半永久的に保存されますので、必要なときに取り出せばよいのです。
まとめ
以上、Google Apps Scriptのプロパティストアの概要とスクリプトプロパティの入力方法についてお伝えしました。
コード内に書くべきではない情報があるよということと、GASではそれらを格納するためにプロパティストアという機能が提供されているよということを確認していただければと思います。
次回、今回格納をしたスクリプトプロパティをGASのスクリプトから取得する方法についてお伝えします。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方
コメント
本日、GASの本をkindle版で購入しました。
その後たまたまこのブログを見つけ、あ!と思ってコメントしました^^
まだ1/3ほどしか読んでいませんが、GASの本は他に無いのでとてもありがたいです。
またいろんなGAS応用の情報を楽しみにしてます。
ありがとうございます!
書籍、ブログともにご活用いただければ幸いです。
今後共どうぞよろしくお願いいたします!