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

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

記事内に広告を含む場合があります。このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。問題のある表現がありましたら、お問い合わせいただけますと幸いです。

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

SharePointリスト

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

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

Power Apps画面

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

Patch関数の基本

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

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


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

実際のコード

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

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

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関数は次のような書き方で数値を時刻へと変換できます。

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

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

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

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

参考

ふー

ふー

Microsoft Power Platformを使ったり、ガジェットを買ったり、アニメ見たり、バイクに乗ったり、色々しています。

FOLLOW

カテゴリー:
関連記事

コメントを残す

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

CAPTCHA