3
10

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 3 years have passed since last update.

Power AutomateでSharePoint上のExcelを毎月定期的にコピーする

Posted at

はじめに

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」フォルダがあります。
image.png

subフォルダの中身は現時点では空っぽですが、毎月のBook.xlsxのコピーをこのフォルダに保存していきます。

Power Automate 全体像

こんな感じです。

image.png

解説

トリガー

毎月実行なので、繰り返しで一か月(毎月1日10時)にしています。

image.png

時間の取得

ファイル名の規則として2021-03-01のようにyyyy-MM-ddの形式でサフィックスをつけたいので、そのために実行時の日時を取得しておきます。

タイムゾーン変換で現在の時刻を日本時間に変換するついでに、yyyy-MM-dd形式にしておきます。

image.png

(※ 慣れてる人は文字列変数で式使ってformatdatetime(utcnow(),'yyyy-MM-dd')とかでOKです)

ファイルのコピー

SharePointのアクションには「ファイルのコピー」というものもあるのですが、同じ名前でコピーする場合は使えますが今回は別名にしたいので使いません。代わりに、ファイルコンテンツの取得を行い、subフォルダに「Book-2021-03-01.xlsx」のような名前で保存します。

image.png

結果確認

こんな感じでコピーされました

image.png

終わりに

今回も質問受けてやってみた系になります。

技術的にはできるのですが、まずは使わなくて済む運用を考えてもらうことを個人的にはお勧めします。

3
10
5

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
3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?