【Adalo】データを毎日定時に自動削除する方法 Make(旧Integromat)編
(なぜこれを書いたか)
私の勤めている会社ではコロナ対策の一環として毎朝検温チェックをやっています。(体温データをスマホに入力して送信すると部署の管理職が見られるようなシステムです)
私がAdaloで検温アプリ(Webアプリ)を作り、部署のメンバーのスマホに入れてもらって運用しています。(40人位)
最初の頃はデータを保存していたのですが、後で再度見返すこともなく毎日その日のデータは夜に手作業で削除するようにしました。毎日の事なので手作業で削除するのが面倒になったり、たまに消すのを忘れてしまったりしたので自動化することにしました。
Adaloで時間をトリガーにして自動化するのは結構厄介です。時間の制御する機能があまりなく、やろうとするとCountDownTimer位しかありません。ただ、CountDownTimerもアプリを表示している時しか動作しないので「毎日午前1時に前日のデータを削除する」といった定時の作業が出来ないのです。
最初はスプレッドシートのGASでスクリプトを書いて自動化しようと考えましたが、Adaloのシステムを作り変える必要があったので面倒なのでやめました。
ただ、この検温システムは一番最初はGlideで作って運用始めたので削除プログラムは既に作ってあり、実際それで半年くらい動いていました。Glideを使っているうちに無料プランでは収まらなくなってしまい、仕方ないのでAdaloに移行しました。
いろいろ迷った末に連携アプリでやるのが一番良いだろうと考え、Make(旧Integromat)を使うことにしました。連携アプリの中ではZapierをよく使っていましたが、残念なことにZapierは定時削除の機能が無いのでMakeにした次第です。
1.検温アプリについて
私がAdaloで作った検温アプリは以下のような簡易的なものです。名前と体温の選択肢が登録されていてDropDownで選ぶようにしています。データを送ると課ごとにソートされて送信時間が追加されます。(下図右)
今回はMake(旧Integromat)を使ってこのデータを毎日午前1時に自動削除できるように設定していきます。
2.Adalo側の準備
Adaloのデータを定時に削除するためにはAdaloとMakeをAPI接続させる必要があります。AdaloのAPI関係で必要な情報は以下の3つです。
①AdaloのAPI Key
②AdaloのAppID
③AdaloのDatabase Collection ID
~APIキーの取得~
Adaloの画面左のツールバーから「Setting」メニューを選択するとAPI Keyという項目があります。API Keyは普通は「・・・・・」と伏字になっています。「Generate API Key」を押すと文字列が表示されます。コピーしてメモ帳などに貼っておきましょう。
~App IDの取得~
App IDとはこのアプリのIDです。(「検温アプリ」のID)
データベースを選択し、画面上部に表示されているURLにAppIDは含まれています。appsとscreensに挟まれた文字列がそれです。
~Database Collection IDの取得~
Collection IDとはデータベース固有のIDです。削除したいデータが入っているデータベースの画面を開いて画面右側の3点リーダーをクリックします。メニューがその下に表示され、上から3番目にある「<> API Documentation」を選択します。
API Documentation を選択すると次の画面が開きます。
API Documentationを選択すると下記の画面が開き、End PointのURLが表示されます。URLの文字列の中でcollectionsより後ろの文字列がDatabase Collection IDになります(下図)
API Key、app ID、Database Collection IDがこれで分かりましたのでメモ帳にコピーしてまとめておきましょう。(Makeでは2回同じ入力があるのでまとめておくと効率よく入力ができます)
3.Make側の設定
皆さん、Makeって知ってました?「知らないよ」という方が多いと思います。だってついこの間の2022年の2月まではIntegromatという名前の連携ソフトだったものが、Makeという名前に変わったのですから。
注意点としてはIntegromatのサイトを開いて新規に設定を行おうとしても今は出来なくなっています。必ずMakeのサイト(make.com)にアクセスしてそこからスタートしなければなりません。(Integromat時代にアカウントを登録された方はMakeでは再度登録は必要ないです)
以下がMakeのサイトの初期画面です。ここでSign inして各種設定を進めていきます。
Sign in すると下記の画面が表示されます。Makeではアプリとアプリをつなげてワークフローを作りますが、このワークフローの事を「シナリオ(scenario)」と呼んでいます。(Zapierだと「Zap(ザップ)」って呼んでいますよね。)
ワークフローを新規に作る場合は画面右上の「+ Create a new scenario」(新規シナリオ作成)をクリックして下さい。
シナリオ作成の初期画面が表示されます。(下記)ここを起点に各種設定を行っていきます。
~Makeで設定すること~
目標:午前1時になったら前日のAdaloのデータを自動で削除する
これをMakeで実行するためには以下の3つの設定が必要になってきます。これらの設定を以下で順にやって行きます。
①データの検索(リストのサーチ)List Records
②指定時間に該当するデータをフィルター(filter)する
③フィルターされたデータを削除する Delete Record
ワークフロー(シナリオ)のイメージとしては以下のような感じです。
Adalo(List Records) →(フィルター)→Adalo(Delete Record)
まず、アプリの選択画面から「Adalo」をクリックして下さい。(下記)
Makeに何をさせるかの設定をします。「前日の検温データの検索」をさせるのでここでは「List Records」を選択します。
(補足)
①Watch RecordsとList Recordsの違い
今回、データの検索に「List records」を選択しますが、最初やったときは「Watch Records」なのか「List Records」なのか分かりませんでした。
対象とするデータが未来か過去か考えてみると分かり易いです。
・Watch Records・・・データが今後追加になったり、変更されたりするときに使用。これから発生する未来のデータの検索に使用
・List Records・・・・既に登録されている過去データのリスト検索に使用
②連携するアプリによって表示される名称が異なる
「Airtableで定時にデータ削除する」という内容の別ブログを書いたのですが、Airtableの場合、データを探す行為は「Search Records」という設定で行います。接続するアプリによって表現が微妙に異なります。
「List Records」に関する入力をやって行きます。下記の「Add」をクリックすると必要な入力画面が出てきます。
API接続をするために以下の入力を行います。(先ほど情報をまとめたメモ帳からデータをコピーして下さい)
①API Key
②App ID
③Database Collection ID
上記画面の入力が終わったら「Save」ボタンを押して内容を保存します。
下記画像で「+」部分をクリックして次のアプリと連携します。
次のアプリと言っても今回はAdaloしか使わないので
Adalo(List Records)からAdalo(Delete record)へという連携を作ります。
「Adalo」という表示が出てくるのでクリックします。
2番目のAdalo連携ではデータを削除するのが目的なので「Delete Record」を選択します。
「Delete Record」の設定を行います。
下記の「Add」の部分をクリックすると入力画面が出てきます。
API接続の画面が出てきますので、「List Records」でやったのと同じ設定を入力します。
API接続の設定が終わると下記画面が表示され、Record IDに入力をするように求められます。Record IDには選択肢から「Record ID」を選んで下さい。
(補足)
データベースを作ると(目には見えないですが)行単位でレコードIDという(番号がかぶらない)一意のIDが作られます。今回はどのレコード(行データ)を削除するかの設定をしているのでRecordIDを入力します。
以上で「List Records」と「Delete Record」の設定が終わりました。
~フィルターの設定~
次に中央にある「スパナマーク」をクリックして「Filter」の設定を行います。今回削除したいのは検温データの前日のデータですからフィルターで前日のデータを検索できるように設定します。
~Filterの設定内容~
①Label:シナリオの内容を分かり易い表現で入力します
Condition(フィルター条件)
②1.Created at ・・・・「データの作成時刻」が、
③Earlier than (~より前の)
④addHours(now:-1)
・・・now(削除を実行する基準時間)より1時間前のデータという意味。
「addHours」は基準時間に時間(Hours)を加える関数です。数字にマイナスを付けると、-1は「1時間前の」という意味になる。
多分、このFilterの画面設定が一番分かりづらいと思う。 私もよく分からず、試行錯誤してようやく動く設定を見つけた。
時計マークをクリックして削除を実行する時間の設定を行います。今回は「毎日、午前1時になったら前日のデータを削除する」のが目的なので以下のように入力します。
Run Scenario:Every day
Time:01:00 (午前1時)
4.動作チェックします
以上で設定はすべて終了です。設定内容でうまく動くか確認します。画面左下にある「Run once」をクリックします。1回テスト的に動きます。(時間のトリガーを設定しても、それとは関係なくクリックすると動きます)
うまく行くと画面がいろいろ変わっていきます。
Filterの部分の数字がどんどん増えていきます。1,2,・・・6
Delete Recordを設定した方のAdaloも削除したデータ数が表示されます。今回は6個のデータを削除したので6という表示があります。
Adaloのデータベースを見てみましょう。最初、6個の検温データが入っていた「社員データ」はすべて削除され、今は1個もデータが入っていません。
動作確認して「これで良し!」となったら画面左下にあるシナリオの設定ボタンを「ON」にしておきます。(今まではOFFになっていた)
これを設定し忘れると設定内容が正しくても動かないという事になってしまいます。
5.シナリオに名前を付ける
最後になりますが、作成したシナリオに名前を付ける習慣をつけましょう。私は名前を付けるのを忘れてしまい、シナリオの中身が分からなくなってしまい、あちこちシナリオを開いて確認するという事がよくあります。
こうならないように画面左上に名前を入力する部分(下図)がありますので忘れず名前を付けましょう。
(あとがき)
長かったですが、これですべて終了です。Filterの設定画面などは何度もやって慣れないとちょっと難しいかも知れません。
Make(旧Integromat)はZapierと比べて機能が豊富な分だけ難易度が高いような気がします。Zapierを初めて使った時は何も見ないで見当をつけて何とか使えましたが、Makeはそんなわけには行きませんでした。(一番最初に使った時は「こんな難しいアプリ一生使うことは無いだろう」と思いました)
私の場合、Makeをたまにしか使わないとすぐ使い方を忘れてしまいます。今回、noteに使い方を書いたおかげで頭の中を整理する必要に迫られ、いつも感じていたモヤモヤ感が無くなりました。自分の備忘録としても今後役立ちそうです。
やっぱり他人のブログを読んでいると理解した気分になってしまいますが、自分でブログを書くと本当は理解出来てないところが数多くあることに気づきました。もし記述に間違い等発見されたら指摘いただければ幸いです。
(関連ブログ)
(過去の投稿はこちら)
https://note.com/mucho3/n/n632515d056d1
この記事が気に入ったらサポートをしてみませんか?