
【Airtable】Automationで定時データ削除が出来ないのでMakeでやってみた
(なぜこれを書いたか)
最近Airtableを使うようになり、Automation機能を使っていろいろな自動化に挑戦しています。私がやりたいことの一つに毎日定時にリストを削除するというのがあります。
ところがリストのデータをAutomationでDeleteする機能が見当たらない。調べたら、有料会員になってスクリプトを書いてやれば出来るという事を発見しました。(簡単には出来ないらしい)
何とか無料の範囲でAirtableのリストを毎日定時に削除するには、自分の中では連携アプリのMake(旧Integromat)を使うしかないだろうという結論に達した。備忘録もかねてMakeの使い方をまとめてみました。
1.やっぱりMakeしか無いのかなあ?
今迄AdaloとAirtableをAPI接続するブログをいくつか書いてきましたが、ZapierやMake(旧Integromat)等の連携アプリを使わずに直接接続するやり方にこだわってきました。
しかし、Airtableでデータを毎日定時で削除したいと思い、いろいろやってみましたが、どうしてもうまく行かない。AirtableのAutomation機能でデータ削除を自動化したいと思っていたが、そもそもDeleteという選択肢が出てこないので困ってしまった。(下記画像)
調べたら「Run Script」という機能でDeleteするスクリプト(プログラム;javascript)を書けば出来るらしいという事まで分かりました。しかし、それは有料会員にならないと出来ないのです。(無料第一主義の私にはとうてい受け入れることが出来ませんでした。残念!)
やっぱり連携アプリのZapierとかMake(旧Integromat)を使わないとだめかなあ、と思い始めました。確かZapierは定時でDeleteする機能は無かったはずなのであまり使ったことの無いMakeでやってみることにしました。
~Makeの素晴らしさを実感!~
皆さんはMakeって知ってます?「何それ?」っている人が多いと思います。つい先月(2022年2月)まではIntegromatという名前の有名な連携アプリでした。それが現在はMakeという名前になり、機能も料金もアップグレードされました。(という話です。)
私はIntegromatをあまり使ったことが無かったのでMakeになって何がどう変わったのか正直分かりませんが、ただ使ってみてZapierにない機能がいろいろあり、大変すばらしいアプリだという事を実感しました。
(素晴らしいと思った点)
1.定時の削除機能がある
2.動的なトリガーが無くても削除できる
・・・Zapierで自動化する場合、データの追加や変更等の動的な(動きのある)トリガーが必要ですが、Makeの場合は動的なトリガーが無くても削除が出来ます。例えば既に登録されたデータがあって、登録から24H経過したものを削除するといった使い方も可能です。(条件に合致したデータを探し出し、それをレコード単位で削除できます)
2.Airtable側の準備
適当なサンプルをAirtableで作って、それをMakeで定時に削除するという設定を以下でやっていきます。(「定時」というのは、本件では毎日午前1時に前日のデータを削除するという使い方を想定しています)
今回は「メール」というBaseに「問い合わせ」というTableを作ってみました。
内容的には以下のような問い合わせフォームのようなデータテーブルです。(下記)
Makeで設定する際にAirtableのAPIキーが必要になります。そのためAPIの設定を調べるために画面右上の「HELP」をクリックします。
画面右側に表示されるメニューの一番下の「API documentation」を選択。
次に表示されるページで、画面左側中央あたりにある「List records」を選択します。
List recordsを選択すると画面右側に以下の設定項目の詳細が表示されます。
・API のURL
・API Key→画面右上の「show API Key」を押すと表示される
Makeの設定で以下の項目が必要になってくるので私はメモ帳にコピーしてまとめています。
3.Make側の設定
次にMakeの設定を行います。注意事項として以前のIntegromatのサイトでは新規の設定は出来ないようになっています。make.comにアクセスしてここで登録や設定を行います。(Integromatで登録したユーザーは新規に登録は必要ないです。)
Makeではアプリを連携して作るワークフローを「シナリオ」(scenario)と呼んでいます。何かを始める場合、画面右上の「+Create a new scenario」をクリックします。
シナリオを新規に作る場合、最初に以下の画面が現れます。連携するアプリの設定を行います。今回はAirtableしか使わないので「Airtable」→「Airtable」というフローを作っていきます。今回Makeで作るワークフロー(シナリオ)は以下のようなものです。
~目標:毎日午前1時に前の日のデータを削除する~
①データを検索する
②指定した時間に合致するデータにフィルターをかける
③フィルターされたデータを削除する
まず「Airtable」をリストの中から選択します。
該当するデータ(前日に作成のデータ)を探すために「Search Records」を選択します。
(補足)
~「Watch Records」と「Search Records」の違い~
「Watch Records」はこれから起きるActionによって作られるデータ(追加、変更等)を検索するために使うもので、対象は未来のデータです。
一方、「Search Records」の場合は既にあるデータの中で条件に合致するものを探すときに使います。つまり、過去のデータを対象にしています。迷ったら対象が未来なのか過去なのかを考えると分かり易いと思います。
「Search Records」を選択すると以下のような設定画面が表示されます。画面に従って設定すべき項目を選択していきます。(Baseの設定)
一つ設定すると次の項目が続々と表示されてきます。(Tableの設定)
上記設定の「OK」を押すと次のモジュールを設定する画面に移ります。
(モジュールとはMakeで連携しようとしているアプリの事です)
もう一つのモジュール(連携するアプリ)として「Airtable」を選びます。
最初やった時はちょっと変な感じでしたが、シナリオ(ワークフロー)は(○○のアプリ)→(○○のアプリ)
のような形で設定するので今回はAirtableしか使いませんが
Airtable→Airtable の形で設定を行います。
Airtableのデータを削除するので「Delete a Record」を選択します。
「Delete a record」を選択するとすでに最初のAirtableでやった設定をもう一度入力します。(Base,Tableなど)
(補足)
「Record ID」という項目がありますが、これはデータベースを作ると各行(レコード)ごとに一意の(番号がかぶらない)IDが割り振られます。行単位でデータ(レコード)を削除するときは行ID(レコードID)を削除すると考えて下さい。ここの設定は「ID」を選択肢から選んで下さい。
上記設定画面で「OK」ボタンを押すとAirtable1とAirtable2の設定は終了です。今度は真ん中にある「スパナ」マークをクリックしてフィルターの設定を行います。
「スパナ」マークをクリックして「Set up filter」を選択
~フィルターの設定画面の入力~
Label:今回のシナリオに分かり易い名前を付けて下さい(データ定時削除)
Condition:(「条件」の意味です)
→「午前1時に前日のデータを削除する」が今回の目標です。
以下のように条件を設定しました。
①「データ作成時間が」1.Created Time
②「~より以前の」 Earlier than
③「今(処理が実行されるタイミング)よりも3時間前」
addHours(now: -3)
→過去に3時間さかのぼるので「-3」となっている。今より3時間後ならマイナスは付けずに「3」と入れる
※この画面の設定は慣れないとどれを選んだらいいか分かりにくいです。私は迷いに迷って何とか動く設定を見つけました。
上記設定画面の「OK」を押すとフィルターの設定は終わりです。以下のような表示になります。
次に「時間のトリガー」の設定をします(「毎日午前1時になると前日のデータを削除する」という動作のための時間設定です)
①時計マークをクリック
シナリオの動作タイミング:
②「Every day」(毎日)
③「01:00」(午前1時;深夜です)
これですべての設定は終了です
4.動作テストをしてみる
画面左下の「Run Once」を押すと設定した動作が1回行われます。(データ削除が実行されます)動作が問題なかったら設定を「on」に切り替えます
(注意)
onへの切り替えを忘れると実行されませんので注意して下さい。
シナリオが実行されると以下のように表示が変わります。
変更されたデータの数が表示されます。(以下の例では5個のデータが削除されたので5という数字が表示がされています)
Airtableの「問い合わせ」テーブルを見てみるとデータが全部消えています。
(あとがき)
データの定時削除をAirtable内で完結させようと思ってもう2週間も考え続けてきましたが、どうしてもやり方が分からず途方に暮れていました。ネットでNocode関係のニュースを見ていたらIntegromatがMakeにアップデートされましたという記事を発見し、どんな機能があるのか見ていたら定時削除も可能だと発見し、試行錯誤しながら設定をやってみました。
一応これでAirtableのデータを定時に削除する設定が出来ました。慣れないと設定が難しいところもありました。(フィルターの設定画面など)
Make(Integromat)は無料の範囲ではシナリオは2個しか使うことが出来ません。それ以上使いたい場合は有料会員になる必要があります。
しかし、シナリオを作って登録するのはいくらでも出来ます。「2個」というのは動作する設定(on)になっているものがMax2個であって、それ以外は動作をOFFにしておけば大丈夫です。
私はMakeを使って間もないので間違った記述があったらご指摘いただけると幸いです。自分の備忘録的にいろいろ書いたので分かりづらい箇所もあったかもしれません。
(関連ブログ)
(過去の投稿はこちら)
https://note.com/mucho3/n/n632515d056d1