OneDrive for Business :ファイルを PDF としてコピー(裏では Power Automate が)

昨日から3日間開催される Japan Power Platform Conference 2022

https://powerplatformconf.connpass.com/event/245996/

こちらで昨日のお昼に Microsoft MVP 仲間の山さんとトークセッションをしたんだけど、直前になって急に色々デモがしたくて触ってたら見つけた機能があったので紹介します。いつ展開されたかもわからないしもしかしたら知ってるよって人も少なくないかもしれないけど、セッション中に紹介したら「知らなかった」という声が多かったです。


特に Word や PowerPoint のファイルをPDFにする場合ありますよね。顧客に渡す営業資料など。PDFに変換どうしていますか? Adobe の機能で変換したり、 Word や PowerPoint からも変換できますよね。

▼ PowerPoint で PDF として保存

他にも Office ホームで「PDFに変換」なんてメニューもありますね。

Office ホーム の UI が変わった ? その後

他にもPDFに変換する方法は色々あると思います。そんな中で OneDrive for Business (以下 ODfB )からもPDFに変換する方法があったんです。しかも裏側では Power Automate のフローが自動作成されていてそのフローが動く形で。

あ、記事のタイトルの通り、これは OneDrive for Business の話しなので、 Microsoft アカウントで利用できる OneDrive には確認できなかった機能です。

■ ODfB でファイルをPDF化する方法

メニューは2か所あります。

▼ファイルを選択し、コマンドバーの「自動化」→「 OneDrive (Business) でファイルを PDF としてコピーする」

もう一つは、

▼ファイル名右の縦…から展開されるメニュー内「自動化」→「 OneDrive (Business) でファイルを PDF としてコピーする」

いずれかの方法でクリックすると、

▼右からパネルが出てきて、コネクタのサインインを求められる場合もあるのでサインイン

▼全てサインインできたら「次へ」をクリック

先に言っておくと、この時点で裏側では Power Automate のクラウドフローがマイフローの中に自動作成されています。

▼画面が変わったら「フローの実行」をクリック

▼完了

▼数秒でPDFファイルが作成されました

元ファイルと同じフォルダー内に元ファイルのファイル名の後ろに _YYYY-MM-DD_hh-mm とコピーした日時が付いていますね。ここで実は違和感を覚えるんです。それはこの日時がおかしいこと。

▼更新日時とファイル名

10/19 07:04 に更新されているけど、ファイル名の時間の部分は 10-18_22_04 になっています。9時間の誤差があります。これタイムゾーンの関係ですね。でも、 Microsoft 365 自体のユーザー設定は

▼日本時間になっています

さて、これは何でか?勘の良い人はわかっていると思いますが。

■裏側で Power Automate くんががんばってくれている

このように ODfB のUI上からボタンをポチポチするだけで選択したファイルがPDFとしてコピーされるけど、裏側には Power Automate のフローが自動生成されて動いているという話はしました。実際に Power Autoamte を開いてマイフローを見ると、

▼クラウドフロー内にフローが作成されています

▼中を見ると実行履歴に実行されたログが残っていますね

▼フローの中身

Power Automate を触った事がない人ならサッパリわからないハズです。これが自動生成されて作られたフローが実行されて便利さだけを享受できるから凄いですよね。それで便利さを実感できることで Power Automate に興味を持ってくれるユーザーが増える可能性も高くなると思います。そしてこのようにテンプレートで作られたフローの中身を見る事で勉強にもなりますね。プレビューのアクションが使われている点を気にする人もいるかもしれませんが、まぁこんなものだと思います。

▼興味深いのがエラーの処理もフロー内に入ってる点

1つ前のPDFが生成されるアクションでエラーが発生するとメールが通知される仕組みがありました。ステータスが406かどうかで分岐させる方法は僕もこれを見て勉強になりました。例えばこの通知メールが英語なのでそれが嫌ならメール本文を日本語に変えれば良いですね。まぁ、これは自分にしか届かないメールだから自分さえ把握していればこれで十分ですが。

そして日付に9時間の誤差がある点も、 Power Automate のフローが使われている点からも察しが付きましたが、

▼PDFに変換されたファイルを保存するアクションの「ファイル名」の部分

このように関数を使ってファイル名が生成されますが、

concat(substring(body(‘Get_file_metadata_using_path’)[‘Name’], 0, lastIndexOf(body(‘Get_file_metadata_using_path’)[‘Name’], ‘.’)), ‘_’, formatDateTime(utcNow(), ‘yyyy-MM-dd_H-mm’),’.pdf’)

このような関数が記述されています。良く見ると formatDateTime の所の直後に utcNow() と書かれています。つまりタイムゾーンがUTC(協定世界時)の今の日時を取得しています。JTC(日本時間)はUTCの+9時間なのでそこで誤差が出てくるわけですね。原因がわかれば直せますが、別に変換されたPDFファイル名をそのまま使うわけじゃないと思うので気になればファイル名の日付の部分を消したり修正すれば良いだけなので僕はこのままでも気になりません。そういう割り切りもアリ。ただ興味を持った Power Automate の勉強をしたい!となったらちょっと検索すると方法をアウトプットしている人はたくさんいるので参考にしてみましょう。数年前には検索しても情報がほとんどなかったのでイイ時代になりましたね。直前にタイムゾーンの変換アクションを追加して変換後の値を適用させる方法もあります。また、関数を直接イジる方法もあります。その場合も単純にutcNow()に9時間追加する方法もあれば関数でタイムゾーンを変換する方法もあります。色んな方法があって全て検索すれば出てくるので是非試してみてください。

一例を紹介するとしたら一番簡単なのは+9時間かな?

formatDateTime(utcNow(), ‘yyyy-MM-dd_H-mm’)

formatDateTime(addHours(utcNow(),9), ‘yyyy-MM-dd_H-mm’)

こんな感じでしょうか。試してないので正しいか自信がないけど(笑)

■このメニューを利用するたびにフローが自動作成されるの?

例えば10回このメニューから機能を利用したらマイフローに10個のフローが作られちゃうの?って不安もあると思いますが大丈夫なので安心してください。初回利用時にフローが作成されるけど、2回目からは作られたフローが実行されます。

▼数回利用した後の初回利用時に自動作成されたフローの実行履歴

■ PDFに変換できる条件

今まで試したのは PowerPoint のファイルでしたが、他にも

▼ Wordファイル

▼ Excelファイル

さすがにこの御三家はPDF変換できます。他のファイルは?

▼変換できないファイルはコマンドバー内にメニューが表示されません

ただ、偶然試した時に発見したけど、メールの .eml ファイルは、

▼何故かメニューがありました

ただし、試してみたところ、

▼変換できずに例の通知メールが飛んでいました

という事で Word Excel PowerPoint のみだと思っていてイイかと思います。実際PDFファイルに変換したいもののほとんどはこの3つですよね。