Power Appsで日・時間・分でパーツが分かれている場合にPatch関数で登録する方法

Power Appsで日・時間・分でパーツが分かれている場合にPatch関数で登録する方法

Power Appsで日付、時間、分で分かれているものを、SharePointリストにPatch関数で登録する方法を紹介します。文字列に変換して結合する方法もありますが、こちらの方が短くわかりやすいため、備忘録として記事にしておきます。

SharePointリスト

今回利用するSharePointリストはこちら。

シンプルに日付列(日時含む)の列のみを作成しました。この日付列に登録をしていきます。

Power Apps画面

SharePointリストをデータソースにフォームを作成しボタンを配置します。これをSubmitForm関数ではなく、あえてPatch関数を使って登録処理をしていきたいと思います。

Patch関数の基本

learnにも記載がありますが、新規登録、更新の場合のコードの基本的な構造はこちらです。

Pwoer Apps
//新規登録
Patch(【データソース】, Defaults(【データソース】), 
{
    【SharePointの列名】: 【入れたいデータ】,
    【SharePointの列名】: 【入れたいデータ】
}
)


//更新
//データソースからLookupで行を特定しその行を更新する
Patch(
    【データソース】,
    LookUp(
        【データソース】,
        【SharePointの列名】= 【検索値】
    ),
    {
    【SharePointの列名】: 【入れたいデータ】,
    【SharePointの列名】:【入れたいデータ】
    }
)

実際のコード

実際のコードはこちらです。

「datesource」というSharePointリストにデータを追加しています。

Pwoer Apps
Patch(
  //datetimeはSharePointのリスト名
    datetime,
    Defaults(datetime),
    {
        タイトル: DataCardValue5.Text,
        dateTime: DateValue1.SelectedDate + Time(Value((HourValue1.Selected).Value),Value((MinuteValue1.Selected).Value),0
        )
    }
)

タイトル列はテキストで登録しているだけなので説明は割愛します。

問題のdataTimeの列は日・時間・分をそれぞれ結合して登録しています。

「DateValue1.SelectedDate」はDateValue1で選択された日付なのでそのままです。

続いての「Time(Value((HourValue1.Selected).Value),Value((MinuteValue1.Selected).Value),0)」について少し解説します。

コード内容
(HourValue1.Selected).Value
(MinuteValue1.Selected).Value
それぞれのコントロールのValueを取得
Value((HourValue1.Selected).Value)
Value((MinuteValue1.Selected).Value)
それぞれのコントロールのValueを数値へ変換
Time(Value((HourValue1.Selected).Value),Value((MinuteValue1.Selected).Value),0)Time関数でそれぞれの数値を時間に変換
※日付は1970/1/1になります。
※最後の「0」は秒数。

Time関数は次のような書き方で数値を時刻へと変換できます。

Pwoer Apps
Time(【時間】 ,【分】,【秒】,【ミリ秒】)

日付は初期値の「1970/1/1」になるので、今回は「DateValue1.SelectedDate」を結合して補完しています。

秒数もコントロールから取得するときにはこんな感じになります。

Pwoer Apps
Patch(
  //datetimeはSharePointのリスト名
    datetime,
    Defaults(datetime),
    {
        タイトル: DataCardValue5.Text,
        dateTime: DateValue1.SelectedDate + Time(Value((HourValue1.Selected).Value),Value((MinuteValue1.Selected).Value),Value((ScondValue1.Selected).Value
        )
    }
)

ScondValue1というドロップダウンのコントロールを追加し時間と同じように取得しています。もしミリ秒も必要であれば同じようにすることで設定可能です。

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA