こんにちは。アーティサン株式会社の小刀稱(ことね)です。
「Power AutomateでExcelをSharePointリストにインポートしたい時に考えること」シリーズの第4回です。
本シリーズでは、私が実際にPower Automateを用いて、「ExcelをSharePointリストにインポートする」フローを作成していきます。
また、作成の際に学んだ点や躓いた点を中心に紹介いたします。
Power Automateでどんな事ができるのか知りたい、実際の作成方法を知りたい、という方に向けた記事です。
前回はPower AutomateにてExcelデータをSharePointリストにインポートするフローを作成しましたが、 実行したところ、ExcelデータとSharePointリストのdatetime列に差異(SharePointリストのdatetime列が9時間先行)が発生していました。
第3回目の内容はこちらを参照ください。
Power AutomateでExcelデータをSharePointにインポートするために考えること(第3回)
今回は、発生した現象の原因とその対処方法についてお伝えしていきたいと思います。
発生した現象の原因と対策
まずは発生した現象を再度確認します。

datetime列に着目してください。(画像上部がExcel、下部がSharePointリスト)
SharePointリストのdatetime列が9時間先行していました。
原因について順を追って説明します。
前提として、SharePointのdatetime列は、サイトコレクションのタイムゾーン設定に基づいて、タイムゾーンの値を考慮した日時を表示します。 (今回の場合は、JST(日本標準時)環境の日時を表示します。)
また、SharePointではタイムゾーンがない日時データは、時差ゼロ=UTC(協定世界時)として日時を扱います。
Excelのdatetime列(シリアル値)にはタイムゾーンが含まれておりません。
よって、Excelのdatetimer列をそのままSharePointにインポートすると、その値はUTCとして扱われます。
JSTはUTCから+9時間の時差があるため、タイムゾーンの設定に基づき SharePointリストのdatetime列が9時間先行して表示されておりました。
対処法としては、「項目の作成」アクションの前に「タイムゾーンの変換」アクションを追加することでタイムゾーンを調整します。

変換元のタイムゾーンを「UTC」、変換先のタイムゾーンを「UTC -9:00」に設定しています。
これは、Excelのデータから-9時間した値をUTCとして認識させることを意味しています。
ちなみに、「取得した値を9時間減算する」という処理は「時間からの減算」アクションでも対応可能ですので、どちらのアクションを使用しても同様の結果を得ることができます。

フローの実行
それでは修正したフローを再度実行しましょう。
保存したExcelファイルの横にある三点リーダーから「自動化」→「作成したフロー名」をクリックすることで実行できます。

今度こそ、想定した通りのデータをインポートすることができました!

まとめ
実際に作成すると、いろいろと考慮事項などはありましたが、アクション数としてはたったの5つです。

フロー作成にあたり、躓いた箇所とその対応方法をまとめてみました。
-
SharePointリストExcelのDate列の形式が異なっていた。
「表内に存在する行を一覧表示」アクションの日付形式に関する取得方式を、シリアル値からISO 8601形式に変更した
-
SharePointリストのdatetime列が9時間先行していた。
「タイムゾーンの変換」アクションにて-9時間した値をUTCとして認識させた
今後の構想
ここまでで、必要最低限な機能を作成することができました。
しかし、実際の運用を想定すると、以下の内容は気になるところではないでしょうか。
-
動的にExcelデータを取得するには?
今までは、事前にSharePointに保存したExcelデータ(=静的なExcelデータ)からPower Automateを起動していました。
しかし実際の運用では、「メールに添付されたExcelデータを自動的にインポートする」や、「SharePointにExcelデータが保存された際、自動的にインポートする」という要望もあると思います。
そのような場合には、動的にExcelデータを取得する必要があります。
-
表データの行数が多い場合は?
Excelの表データを取得する際には、「表内に存在する行を一覧表示」アクションを用います。このアクションでは、既定で256行分のテーブルデータしか取得することができません。
よって、256行より多いデータを取得する際には、少し工夫が必要となります。
-
表データの中に異なる形式の値がある(例:日付に文字列が入っている)場合は?
SharePointリストに値を追加する「項目の作成」アクションでは、読み込んだデータが異なる形式の場合、エラーとなります。そうなると、その行のデータはインポートされません。
さらに本アクションがエラーの場合、後続のアクションは実行されず、想定外の挙動となることがあります。
それを防ぐための考慮も必要となってきます。
次回以降は、上記で挙げた項目を中心に作成したフローを作り込んでいきます!
ここまで読んでいただき、ありがとうございました。
【このシリーズの過去回一覧】
-
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第1回】
4つのシーンごとに手法を比較、その最適解とは? -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第2回】
フロー作成でエラー発生! -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第3回】
フロー実行時のエラー内容と対処方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第4回】
タイムゾーン差異と対処法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第5回】
ExcelファイルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第6回】
インポートするためのドライブIDを取得する方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第7回】
ファイルIDとテーブルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第8回】
トリガーの条件の指定方法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第9回】
Excel表データの行数が多い場合の対処法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第10回】
インポートがうまくいかない!原因と対処法は? -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第11回】
煩雑なフローをアクションで可読性向上!
【こちらも合わせて読みたい】
弊社ではPower Platform(Power AppsやPower Automateなど)を用いてお客様の業務を自動化するご支援を数多く承っております。
業務の中で、「普段手動でやっている業務を自動化できないか」というような疑問がある場合には、お気軽にアーティサン株式会社までお問い合わせください。

小刀稱知哉
大分県出身(温泉大好き♥♥)、現在は東京都在住
1990年4月9日生まれ
30才にしてメーカーの技術営業からIT業界にジョブチェンジ!!!
趣味は読書
Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!