30
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automate で Excel のデータを SharePoint リストにインポートする (色々はまったことの備忘録)

Last updated at Posted at 2023-02-28

はじめに

Power Platform で何らかのアプリを作成する際などに、既存の Excel からデータを SharePoint リストにインポートしたい場合があると思います。

その際、SharePoint リスト側のデータの型を考慮する必要がありますが、上手く行かずにエラーに遭遇してしまった方もいると思います (個人的に普段 Excel 使うことがほとんどなく、やってみたら色々はまってしまいました)。

そのため、今回は、以下のような様々なデータ型を持つ SharePoint リストに対して、Power Automate を利用して Excel からデータをインポートする方法を説明します。

image.png

Excel の用意

まず、以下のようなデータを用意してみます。そして、Power Automate からテーブルとしてデータを扱うため、以下のように挿入タブからテーブルを作成します。

image.png
image.png

当たり前ですが、Excel の各列のデータのフォーマットを揃えます。
例えば、通貨型の場合は以下のような感じです。

image.png

日付と時間は一旦以下のようにしておきました。

image.png
image.png

Power Automate のフロー作成

とりあえず以下のような感じでフローを作成してみました。

image.png

とりあえずやってみたらエラー発生

早速、以下のようなエラーが発生しました。

The 'inputs.parameters' of workflow operation '項目の作成' of type 'OpenApiConnection' is not valid. Error details: Input parameter 'item/Date' is required to be of type 'String/date'. The runtime value '"44992"' to be converted doesn't have the expected format 'String/date'.

何かフォーマットが違うみたいです。
Excel から受け取った日付のデータが何か違いそうですね。

{
  "@odata.etag": "",
  "ItemInternalId": "d6036dfe-fbc5-414c-b6d1-b21790b0a4ac",
  "タイトル": "テスト9",
  "日付": "44992",
  "日時": "44992.4166666088",
  "数": "100",
  "通貨": "100",
  "選択肢": "Choice3",
  "はい/いいえ": "いいえ"
}

Excel 側で日付を ISO 8601 形式にしてみたりしましたが中々上手く行きませんでした。

image.png

最終的に以下の設定をしたらエラー解消しました。

image.png

データ登録されたけどまだ少し問題がある・・・

一旦、以下のような感じでデータが登録されました。
数字や通貨はあらかじめ Excel で型を統一していたので上手く入ったみたいです。

ただし、DateTime 型の時間データがずれているのと、はい/いいえ のデータが上手く入りませんでした。

image.png

時間については、9 時間ほどずれている感じだったので、とりあえず以下のように時間を -9 時間して一旦どうにかしました。

image.png

addHours(
formatDateTime(items('Apply_to_each')?['日時'],'yyyy-MM-dd hh:mm'),-9)

ただ、1 分ずれちゃっています。。。
Excel がシリアル値で時間を持っているためか、わずかなずれが生じる場合があるのかなと思っています。

image.png

      {
        "@odata.etag": "",
        "ItemInternalId": "17b1288b-8f4d-4064-b876-f0b234cd7fee",
        "タイトル": "テスト10",
        "日付": "2023-03-08T00:00:00.000Z",
        "日時": "2023-03-08T09:59:59.995Z",
        "数": "100",
        "通貨": "100",
        "選択肢": "Choice1",
        "はい/いいえ": "いいえ",
        "True/False": "False"
      }

はい/いいえ 列にはまった

はい/いいえ 列について、中々直接値を入れれなかったので以下のように条件分岐にしてみました。

image.png

文字列の比較の部分は以下のような感じです。

equals(items('Apply_to_each_2')?['はいいいえ'],'はい')

それでも、上手く条件分岐されなかったのですが、どうやら、以下のヘッダーに / が入っていることで値を上手く取得出来ず、正しく条件分岐出来ていなかったことが原因でした (解決するまで結構時間かかっちゃいました)。

image.png

最終的に以下のようにすることで条件分岐が機能し、想定した通りにデータが登録されました。

image.png
image.png

まとめ

今回、Power Automate で Excel のデータを SharePoint リストにインポートする方法について、はまったことを中心に紹介しました。

個人的に、"日付"、"日時"、"はい/いいえ"、そして、列の名前辺りは少し注意する必要があると感じました。

また、インポート先のデータの型を考慮してインポート元となる Excel のデータの型を揃えておくことも重要です (Excel の場合、あまり型を気にせずデータを自由に入れれるため、特に注意が必要と思います) 。

せっかく元データがあるのにこの辺で躓いて時間がかかってしまい、アプリの作成等に取り掛かれないのはもったいないと思いますし、本記事が躓きポイントを少しでも減らすことに役立てば幸いです。

30
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?