SharePointリストから直接Excelへ手動でエクスポートさせる方法もあるんですが、保存すると「.iqy」という拡張子のファイルになります。
気にせず開くと見た目は普通のExcelのように使え、調べたところ、どうやらこのエクスポートしたExcelとリストのデータの関連性を保つのだとか。すげぇ。
あまり詳しくは調べていませんが、今回のメインはそちらではなく。
まぁ、使えるとは言ってもITに理解の低い人たちには受け入れられにくい。
そのため、できればいつも通りの見た目のファイルにしてあげたい。ということで、やり方を調べてみました。
事前準備
フロー作成に入る前に、以下を準備しておきましょう。
- エクスポートの元となるSharePointリスト
- エクスポートする先のフォルダ
続いて、事前に行っておく作業があります
まずはSharePointのフォルダに、適当にExcelファイルを作成しましょう。
ただ作成するだけで良いです。
PowerAutomateでは、何もないところからExcelファイルを作成(エクスポートも同様)するだけの仕様ではないみたいなので、この事前作業は必須です。
左記のように、私は「Aチーム」の中に「エクスポート」というフォルダを作成し、そこにエクセルを作成しました。
中身は空っぽで、作りっぱの状態です。
続いて、上記で適当につくったファイルを模倣するためのデータを取得します。
新しく「インスタントフロー」で下記のフローを作成しましょう。
あとで消す予定のフローです。
トリガーとアクションの2つだけになります。
ファイルコンテンツの取得
インスタントフローはデフォルトから変更しません。
次に当てはめるのは「SharePoint」→「ファイルコンテンツの取得」です。
中身は左記のとおり。
先ほど適当に作成したExcelファイルの場所を指定します。
「ファイル識別子」を設定するときは、項目の右側にあるフォルダアイコンから順番にクリックしましょう。
※「Shared Documents」は共通ですが、他は各自の作成場所によります。
ここまで作ったら一度フローを保存し、テストしてください。
「手動」と「自動」が表示されますが、「手動」で良いです。
フローが無事に動き、テストが実行されると、実行履歴の詳細画面が表示されています。
そこから「ファイルコンテンツの取得」をクリックし、出力を見てみましょう。
今回はこの中の下半分のところ「ファイルコンテンツ」の枠の中をすべて使います。
後ほど使うので、まるまるコピーしておき、メモ帳にでも貼り付けておきましょう。
さて、これで事前準備は終わったので、いよいよ本番です。
※こちらの内容は「https://tech-blog.cloud-config.jp/2023-11-07-power-automate-create-empty-excel-file」を参考にしました
フロー
作成
「データ操作」で検索するとヒットします。
「作成」を選択しましょう。
「入力」の中に、事前作業でコピーしたものをそのまま貼り付けします。
これで、Excelファイルを作成する準備ができました。
これ以降はもう適当に作った「Book.xlsx」は不要なので、後で削除しても問題ないです。
複数の項目の取得
エクスポートしたいリストを選択すれば良いだけのため、割愛します。
ファイルの作成
「サイトのアドレス」と「フォルダーのパス」は前述したので割愛します。
「ファイル名」と「ファイルコンテンツ」を指定します。
ファイル名
この項目は、どのような名称で、何の拡張子のファイルを作成するか、指定する必要があります。
リストからエクスポートしたファイル名ですので、ここは各自で設定してみてください。
単一のファイル名で構わない場合は「×××.xlsx」と入れれば良いだけです。
他、こちらもシステマチックにしたいのなら下記のような方法があります。
作成した日時+拡張子
concat(utcNow(),'.xlsx')
トリガーされた日付+拡張子
インスタントではなくスケジュールフローにするならこれも有りです
concat(triggerBody()['key-button-date'],'.xlsx')
他、動的なコンテンツと組み合わせれば各自に合った命名ができると思います。
concat() というのは要素を結合させる意味になります。
「,」で区切ることで複数結合できます。
文字列を含む場合は「’要素’」となります。「’」(シングル)で囲むのを忘れないでください。
ファイルコンテンツ
ここには「データ操作」の「作成」から「出力」を選択します
テーブルの作成
これ、忘れがち;
EXCELを単なる表計算ソフトとして利用している方々は「テーブル」を意識することは少ないと思います。
私もです。ですが、Automateで取り扱うときはキチンと設定してあげないとダメです。
「場所」と「ドキュメントライブラリ」は、エクスポートする場所を指定すれば良いです。
「ファイル」には「ファイルの作成」の中にある「Path」を動的コンテンツで引っ張ってきます。
ファイルのパスです。
「表の範囲」はとりあえず左上から始めるので「A1」のみ。
テーブル名は今自分が勝手に決めてしまって良いです。
適当に「Table01」にしておきました。
列名は、リストの列名をそのまま当てはめれば良いです。
私の場合は「通番」と「日付」だけですので「通番,日付」と入れました。
複数ある場合は「,」で区切りましょう。
表に行を追加
場所、ドキュメントライブラリ、ファイル、までは今までと一緒です。
次は「テーブル」。
画像では「カスタム値」と表示されていますが、ちゃんと選ぶ手順を踏んでいます。
初回は「アイテムを選択してください」になっていますので、項目をクリックします。
続いて「カスタム項目の追加」を選択できるので、動的コンテンツから「name」を追加します。※下図参照
最後に「行」の設定が表示されますので、JSON形式で記述します。
下記を参考にどうぞ。
便宜上「A列」としたものは自分に合ったものに変更します。
A列の右側「:」と「,」の間に、動的コンテンツでリストから持ち込むものを設定していきましょう。
{
"A列":,
"B列":
}
ここまで作成すると「Apply to each」が自動で発動してくれ、ループに入ります。
これでエクセルへのエクスポートは完成です。