見出し画像

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つ(txtTitletxtDesc)、ボタンを1つ(btnAdd)追加します。

つづいて、btnAddのTextプロパティを"追加"とします。

さらに、btnAddOnSelectプロパティに以下のスクリプトを書きます。

Refresh(SampleSheet);
If(
    !IsBlank(txtTitle.Text) && !IsBlank(txtDesc.Text)
    ,Collect(SampleSheet, 
        {No: Text(CountRows(SampleSheet)+1), Title: txtTitle.Text, Description: txtDesc.Text})
)

txtTItletxtDescDefaultプロパティは""HintTextプロパティにはそれぞれ"タイトルを入力""詳細を入力"と書きます。

こうすることで、タイトルと詳細を入力して追加ボタンを押すと、データテーブル(Googleスプレッドシート)にレコード(行)が追加されるようになります。

2−2.Collect関数

SampleSheetにレコードを追加する際に使用している関数がCollect関数です。

Collect(データソース,レコード[,レコード…])

Collect関数

指定したデータソースにレコードを追加します。

指定したデータソースが存在しない場合は、新たにコレクションを作成します。

2−3.Refresh関数

コネクタを指定すると接続先のデータソースから最新のデータを読み取ります。

Googleスプレッドシートを直接変更してもアプリ側には反映されないので、必要に応じてRefresh関数を呼び出して最新の状態に更新させます。

今回はCollect関数で更新する前に最新のデータを読み込ませることで、データの不整合を防いでいます。
(100%防ぐことはできませんが・・・)

2−4.CountRows関数

CountRows関数は指定したコレクションの行数を、空の場合は0を返します。

今回は行の追加を行う際に、自動的に番号を採番するために利用しました。


いかがでした。

Googleスプレッドシートとの連携は、意外にアッサリできたかと思います。

実を言うとOne Drive上のExcelシートよりも楽だったりします。
(Excelと連携する場合、シート上で一手間作業が必要なのです)

Excelシートとの連携は別の機会に解説することにして、今回はこれで終わりにしたいと思います。

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