見出し画像

【Click_NoCode】外部DBから読み込んでいるデータを再読み込みする方法

(なぜこれを書いたか?)
NoCodeのClickでアプリを作っています。APIを使ってスプレッドシートからデータを読み込んでいます。スプレッドシートのデータをClickから更新しているのですがデータがなかなか変わりません。おかしいと思ってスプレッドシートを見るとデータは変更されていました。

データが変更になってもClickのカスタムリストに表示するのに非常に時間がかかるんです。これでは使い物にならない!と思ってデータをすぐClickのリストに反映させる方法を考えました。いろいろやった結果、ページを切り替えて元のページに戻ると再読み込み(reload)がされてデータが強制的にリストに反映されることが分かりました。

最初、ページの切り替えは手動でやっていたのですが、これでは面倒なので自動でやろうというのが今回のお題です。

1.変更してもAPIからのデータが反映されない

Clickを使っていて何が困るかというとAdaloと比べた場合、使える機能が圧倒的に不足しているんですね。そういう場合は嘆いていても仕方が無いので外部APIに接続して機能不足を補っています。

APIを通じて外部データベースからClickにデータを持って来る場合、何故かデータの変更にやたら時間がかかるんです。データの更新でも削除でも。スプレッドシートのデータは既に変更されているのにそれをClickに読み込むと反映されるのにえらく時間がかかります。(数分単位)場合によっては変更されないこともあります。

せっかくAPIを使っているのにこれではまずいと思い、データを変更したときにすぐにClickに反映する方法が無いかずっと考えていました。結果から言うと、ページの切り替えをして、また元のページに戻るとデータの再読み込みが強制的に行われ、変更した外部データがすぐ反映されます。

(例)
~データの一括変更例~

簡単なデータベースの例で説明します。下図のように会員が10人いて、それぞれがTRUE/FALSEの2つの値を持っているとします。

3人の会員がFALSEの状態でこれをボタンを押すことで一括更新(FALSE→TRUE)する場合を考えます。

しかしClickの標準の機能では一括更新は出来ません。スプレッドシートAPIのPUT/PATCHの機能で一度に状態をUpdateします。すると以下のように画面が変わります。

一括更新ができるスプレッドシートAPIの機能は素晴らしいですね。ただ、これも最初から出来たわけでなく、上述したようにスプレッドシートのデータが変更されてもリストになかなか反映されないんです。これの対策を説明します。

2.ページの切り替えで再読み込みを行う


ページを切り替えるとデータが再読み込みされることが分かったのでダミーのページを用意してここに一時的に遷移し、また戻ってくるという設定を行いました。

(やり方)
ホーム画面のボタンには以下のClickFlowを設定しました。
①外部データの更新(カスタムClickFlowで設定します)
②ダミーの画面に遷移する

ダミー画面に遷移したら、ホームにまた自動で戻ってくる設定をします。
(やり方)
①ダミー画面を選択
・・・ダミー画面左上のDummyという文字をクリックし、画面を選択状態にします。(青い枠で囲まれます。)

②ClickFlowで「ページ移動(ホームへ)」を設定

このような設定をすることでボタンを押すとスプレッドシートのデータが更新され、次に行われるページの切り替えにより更新データがリストに反映されます。

当初はClickに「データの再読み込み」というボタンでもあるのでは、と思って探しましたが、結局無かったです。APIを使ってデータの反映が遅い時はダミーページを作って画面の切り替えをするといいですよ。


この記事が気に入ったらサポートをしてみませんか?