はじめに
SharePoint上にあるExcelを毎月コピーしたい、というシナリオを考えてみました。
元のファイルが「Book.xlsx」で、毎月サブフォルダに「Book-2021-03-01.xlsx」という名前でコピーするケースを想定してみました。
大事な前置き:ここに書いてある内容を実施する前に
Excelを月ごとに分けてコピーして利用する、というシナリオですが、のちのデータの活用を考えた場合にはあまり得策ではない場合もあります。
例えば、その月時点の社員の時給のスナップショットを取っておきたい、というシナリオを仮定します。
Book_2021-02-01.xlsxに2021年2月時点の時給情報が載っているとします。
社員番号 | 時給 |
---|---|
1001 | 1000 |
1002 | 900 |
1003 | 1100 |
最新(2021年3月)の時給一覧はBook.xlsxに載っています。
社員番号 | 時給 |
---|---|
1001 | 1100 |
1002 | 950 |
1003 | 1100 |
もしこのような情報を扱うならば、列を追加して以下のような一つのExcelで管理することも出来るかと思います。
社員番号 | 時給 | 給与設定日 |
---|---|---|
1001 | 1100 | 2021-03 |
1002 | 950 | 2021-03 |
1003 | 1100 | 2021-03 |
1001 | 1000 | 2021-02 |
1002 | 900 | 2021-02 |
1003 | 1100 | 2021-02 |
一つのデータにまとめておけばフィルタなどで最新のデータでも過去のデータでも取り出せますし、変化を追うことも出来ます。
ファイルを分けてしまうと、そういったことが難しくなってしまうのでご注意ください。
では、以下本題となります。
データの準備
SharePointのドキュメントライブラリに「Book.xlsx」と「sub」フォルダがあります。
subフォルダの中身は現時点では空っぽですが、毎月のBook.xlsxのコピーをこのフォルダに保存していきます。
Power Automate 全体像
こんな感じです。
解説
トリガー
毎月実行なので、繰り返しで一か月(毎月1日10時)にしています。
時間の取得
ファイル名の規則として2021-03-01のようにyyyy-MM-ddの形式でサフィックスをつけたいので、そのために実行時の日時を取得しておきます。
タイムゾーン変換で現在の時刻を日本時間に変換するついでに、yyyy-MM-dd形式にしておきます。
(※ 慣れてる人は文字列変数で式使ってformatdatetime(utcnow(),'yyyy-MM-dd')とかでOKです)
ファイルのコピー
SharePointのアクションには「ファイルのコピー」というものもあるのですが、同じ名前でコピーする場合は使えますが今回は別名にしたいので使いません。代わりに、ファイルコンテンツの取得を行い、subフォルダに「Book-2021-03-01.xlsx」のような名前で保存します。
結果確認
こんな感じでコピーされました
終わりに
今回も質問受けてやってみた系になります。
技術的にはできるのですが、まずは使わなくて済む運用を考えてもらうことを個人的にはお勧めします。