株式会社スマレジの開発部でスマレジのサーバサイドを作っています

スマレジAPIを使って、簡単なアプリケーションを作ってみる(実装編1:GASの定期実行とプロパティサービス)

こんにちは!株式会社スマレジ、開発部のmasaです!

今週の大阪は梅雨らしく雨が降ったり止んだりゲリラったりと、傘が手放せない一週間でした。

スマレジでも現在週1回のリモートワークを実施していて、メンバー間で調整をしながら、リモートワークにtryしています!

やってみて思うのは、緊急事態宣言中のリモートワークと違って、オフィスにも人がいるため、オフィスのコミュニケーションをWatchできない点を、どうカバーしていくのかが、今後の課題になりそうって感じです。

ただ、裏を返せば、リモート組と共有するために、チャットやチケットにコミュニケーションの記録を記載するようになるので、今まで以上にコミュニケーションログが残るようにもなっています。これは、後々になって「あの時どうしてそういう決定にしたんだっけ?」と思い返すときにとても助かるので、慣れてくれば、とても良いサイクルなのかなと思っています。

すいません、前置きが長くなりました(~_~;)

今日はGASで連携アプリを作る上での、環境整備と、初期設定部分の実装です。

clasp導入

以前のブログで紹介したclaspを利用して、GASのプロジェクトを作っていきます。

clasp login #claspにログイン
clasp create #GASのプロジェクトを作成。今回はstandaloneを選択
clasp open #作成したプロジェクトをブラウザで開く

定期実行用のトリガーを設定する

例えば、下記のような時間をログに出力する関数があるとします。

function execute() {
    Logger.log(new Date().toString());
}

これを1時間に1回定期実行したい場合、GASのプロジェクトに「トリガー」を設定することで、実現できます。 ※ これは「公開」の「ウェブアプリケーションとして公開」を実施した後に行ってください。

  1. まず、エディタ画面の「編集」から「現在のプロジェクトのトリガー」を選択。
    f:id:masa2019:20200712194756p:plain
    トリガーの設定
  2. トリガーの追加を選択
  3. 下記の画像のように、実行するメソッドとバージョン、時間間隔、エラー通知を設定。 f:id:masa2019:20200712194749p:plain f:id:masa2019:20200712194742p:plain

これでOKです!簡単ですね。 また、トリガーを動的に設定したい場合は、下記の記事をご参考ください。

tonari-it.com

大域変数を隠蔽したい場合は、プロパティサービスを使う

今回作る売り上げ通知アプリの場合、スマレジ・プラットフォームAPIの接続情報(トークン・シークレット)などは、 出来る限り隠蔽しておきたいですよね。 こういった、ハードコーディングしたくない値は、「プロパティサービス」を使って設定することで、ソース状に定数名として 扱うことができるようになります。 これも、やり方は簡単です。

  1. 「ファイル」→「プロジェクトのプロパティ」を選ぶ。 f:id:masa2019:20200712194733p:plain
  2. スクリプトのプロパティ」タブを選んで、定数名と値を設定する。 f:id:masa2019:20200712194723p:plain

こうして設定した定数は、下記のようなソースで取得することが出来ます。

const TOKEN = PropertiesService.getScriptProperties().getProperty("定数名");

これは、プロジェクト内ならどこでも同じ容量で参照できるため、 アプリごとの環境情報なども入れておくと良いと思います。