Power Appsのススメ 〜その7〜 Googleスプレッドシートとの連携(2)
前回はGoogle Sheetsコネクタとデータテーブルコントロールを使ってGoogleスプレッドシートの内容をPower Appsで表示させました。
今回はそのコネクタを利用して、スプレッドシートに記録してみます。
その前に、Power Appsで使われるデータに関する用語を紹介します。
1.レコード、テーブル、コレクション
1−1.レコード
レコードはいくつかのデータをひとまとめにしたもので、スプレッドシートにおける行(ROW)にあたります。
データは名称と値がセットになったもので、レコードはそれらを1つ以上含んでいます。
例えば、FirstNameに"YAMADA"、LastNameに"TARO"をもつレコードはPower Appsのスクリプトで以下のような表現になります。
{ FirstName: "YAMADA", LastName: "TARO }
データは,(カンマ)で区切ることで幾つも並べることができますが、同じ名称のデータを同一のレコードに定義することはできません。
1−2.テーブル
1つ以上のレコードを集めたデータの集まりをテーブルと呼びます。
1−1のレコードを1つだけ持つテーブルをPower Appsのスクリプトで表現すると、以下のようになります。
[{ FirstName: "YAMADA", LastName: "TARO }]
レコードも,(カンマ)で区切ることで複数記述することができます。
1−3.コレクション
コレクションはテーブルを納めた変数やデータソース(コネクタで接続した外部データなど)を指す言葉で、Power Appsでは配列と呼ばれることもあります。
Power Appsではコレクションを用いてテーブルやレコード、値の操作を行います。
2.Googleスプレッドシートの操作
2−1.レコードの追加
それでは前回作成したコネクタ、SampleSheetにレコードを追加してみます。
まずはUIを作成してみます。
このように、データテーブルコントロールを少し狭めて、テキスト入力を2つ(txtTitleとtxtDesc)、ボタンを1つ(btnAdd)追加します。
つづいて、btnAddのTextプロパティを"追加"とします。
さらに、btnAddのOnSelectプロパティに以下のスクリプトを書きます。
Refresh(SampleSheet);
If(
!IsBlank(txtTitle.Text) && !IsBlank(txtDesc.Text)
,Collect(SampleSheet,
{No: Text(CountRows(SampleSheet)+1), Title: txtTitle.Text, Description: txtDesc.Text})
)
txtTItleとtxtDescのDefaultプロパティは""、HintTextプロパティにはそれぞれ"タイトルを入力"、"詳細を入力"と書きます。
こうすることで、タイトルと詳細を入力して追加ボタンを押すと、データテーブル(Googleスプレッドシート)にレコード(行)が追加されるようになります。
2−2.Collect関数
SampleSheetにレコードを追加する際に使用している関数がCollect関数です。
指定したデータソースにレコードを追加します。
指定したデータソースが存在しない場合は、新たにコレクションを作成します。
2−3.Refresh関数
コネクタを指定すると接続先のデータソースから最新のデータを読み取ります。
Googleスプレッドシートを直接変更してもアプリ側には反映されないので、必要に応じてRefresh関数を呼び出して最新の状態に更新させます。
今回はCollect関数で更新する前に最新のデータを読み込ませることで、データの不整合を防いでいます。
(100%防ぐことはできませんが・・・)
2−4.CountRows関数
CountRows関数は指定したコレクションの行数を、空の場合は0を返します。
今回は行の追加を行う際に、自動的に番号を採番するために利用しました。
いかがでした。
Googleスプレッドシートとの連携は、意外にアッサリできたかと思います。
実を言うとOne Drive上のExcelシートよりも楽だったりします。
(Excelと連携する場合、シート上で一手間作業が必要なのです)
Excelシートとの連携は別の機会に解説することにして、今回はこれで終わりにしたいと思います。
この記事が気に入ったらサポートをしてみませんか?