どもども!今回はGoogle Apps Scriptの特殊な領域について説明を挟んでいきたいと思います。スクリプトプロパティ・キャッシュによるデータの一時保存・ユニークなuuidの取得・Triggerを使用した定期実行や予約実行などの使用方法まで解説します。
初めに
ども~こんにちは!爆速でブログを作成している龍ちゃんです。今回は、Google Apps Scriptを使ってサービスを利用する際にひと手間加える方法について共有していきます。このブログのトピックは以下になります。
- スクリプトプロパティ(定数を扱う方法)
- キャッシュ(一時的に情報を保存する)
- Triggerによる定期実行(GUI・コードから設定)
- ユニークな文字列の取得
スクリプトプロパティ
こちらは、環境変数と言えなくもないです。エディタからもコードからも設定できますが、基本的にエディタからの設定でしか使用しません。APIキーなどは念のために見えない形で保存しておいた方が良いですね。
ちなみにプロパティサービスは三種類存在しています。公式ドキュメントに記載がありました。三種類の違いはアクセスできるユーザーの共有範囲になります。今回は、一番扱いやすいスクリプトプロパティについて紹介します。もし、社内でプロパティを使用する際は影響範囲を考えて選定してください。
設定方法
プロジェクトを開いて左のバーから設定を開いてください。
そして、スクリプトプロパティが出てくるまでスクロールしたら設定が出てきます。
情報の保存はKey-Valueで保存する必要があります。基本的に文字列で全部保存することができます。名前はいい感じに命名しましょう。
コードからのアクセス
呼び出し方法はこちらになります。
const data = PropertiesService.getScriptProperties().getProperty("KEY");
設定した値がStringで入ってきます。ちなみにコードで設定する方法は以下になります。
PropertiesService.getScriptProperties().setProperty("KEY", "VALUE");
削除方法は以下です。
PropertiesService.getScriptProperties().deleteProperty("KEY");
こちらを使用することで、コードの共有も安全に行うことができますね。
キャッシュ
こちらも一般的なキャッシュと言えます。コードから設定を行います。キャッシュサービスも三種類存在しています。公式のドキュメントを置いておきますね。アクセスできる場所が異なるだけですね。今回は、スクリプトからアクセスするためのスクリプトキャッシュを使用します。
まずアクセスするためのスクリプトキャッシュへのパスが必要です。
const cache = CacheService.getScriptCache();
リソースの設定方法は以下になります。デフォルトでは600秒で消去されます。Key-Valueで値を保存します。ちなみに一度JSON文字列に変換することでオブジェクトも保存することができます。
// 秒数を指定せずに設定すると600秒で消去
cache.put('KEY', 'VALUE');
// 秒数を指定すれば時間後消去 秒数指定 〇s
cache.put('KEY', 'VALUE', 600);
// JSON形式で保存するとオブジェクトも保存できちゃう
cache.put('KEY', JSON.stringify(object))
取得方法はこちらになります。JSON形式で情報を保存した場合は、オブジェクトに戻す必要があります。
// 取得する
const value = cache.get('KEY');
// オブジェクトは一旦変換噛ます
const objectValue = JSON.parse(cache.get('KEY'))
もし、キャッシュを削除する場合は以下のコードで削除することができます。「removeAll」を使用する場合は、配列で指定します。
// 一個だけ消す場合
cache.remove('KEY');
// 複数消す場合
cache.removeAll(['KEY1', 'KEY2']);
DBよりライトでデータを保存することができるので超便利です。
Triggerによる定期実行
こちらはGASの関数を定期的に実行することができます。こちらの設定もエディタとコードと両方から設定することができます。定期実行の感覚は、特定の日付・分刻み・時間刻み・週ベース・月ベースなど超柔軟に設定することができます。その一方で、指定した時間ぴったりに動作する保証はありません。そのため、正確性を求める処理をGASで定期実行するのは難しいです。
エディタからの実行
プロジェクトを開いて左のバーからトリガーを開いてください。トリガーの追加から設定することができます。
こちらの管理画面でトリガーを設定したい関数と実行したい間隔を設定することができます。
実行は左のバーの実行数のところに表示されます。もし失敗した場合は、デフォルトの設定だとメールで情報が送られてきます。あんまり失敗すると悲しい気持ちになるので、すぐ修正しましょう。
コードからのアクセス
コードからのアクセスは、エディタで作成するよりも柔軟なカスタマイズを行うことができます。今回は、時間ベースでのトリガー作成・削除を解説したいと思います。時間ベースの設定には一回限りの設定方法と定期的な実行方法があります。この辺りは用途によって振り分ける必要があります。詳細な設定方法に関しては、こちらの記事が最高にわかりやすいです。
一回限りの実行方法の設定はこちらのコードを使用します。一回限りの設定の場合は、一度実行すると破棄されます。
// afterは〇〇msで設定する
ScriptApp.newTrigger("関数名").timeBased().after(1000).create();
設定後は左のバーの実行数の部分に表示されます。
ユニークな文字列の取得
こちらではユニークな文字列を取得する方法について紹介します。ユニークなIDはスプレッドシートをDBとして使う際や情報を保護する際にも使用することがあります。結構便利なので覚えておいて損はないです。
const uid = Utilities.getUuid()
終わりに
今回は、Google Apps Scriptを使用する際に便利な機能について紹介しました。Google Apps Scriptだからできることがあります。得意不得意があるので、何を実現したいかで使用する言語を変える必要があります。Google Apps Scriptの活用についてはこちらの記事で解説しています。
初心者が学ぶには最適な言語だと思っているので、皆さん活用してみましょう。
それでは~またね~