Office 365 User コネクタでOneDrive for Business のルートパスが取れる!

はじめに

先日、OneDriveのルートパスがOffice365 Userコネクタで取れるということを知りました。
X(Twitter)でつぶやいたところ、同様に知らなかったという方結構いらっしゃったので共有出来てよかった(自分も同僚から聞いたのですが)
自分もAutomateのOneDriveコネクタで返してくれないのでないものとばっかり。。
簡単に取得方法を載せます。

ぱわ代

これが出来るとユーザーのOneDirveへ作ったファイルへのリンクや
別テナントへインポートする際なんかに役立つわね!

コネクタの公式解説ページは以下です。

実装サンプル:Power Apps の場合

Power Appsの場合ですが、まず、Office 365Userコネクタを追加します。
そして、MyProfileV2やUserProfileV2で「mySite」の値を取ります。
以上です。

このように取れる。

MyProfileV2、UserProfileV2どちらでも

上記のようにmySite プロパティを指定すればOneDrive(for Business)のルートパスが取れます。
上記はそのまま使用していますが、App.OnStartなんかで365UserのMyProfileV2 でログインユーザー情報を変数に保持することは多くあると思うのでそこにあるmySiteを使えばOK。なんで今まで気づかなかったのか。。

実装サンプル:Power Automateの場合

Power Automateの場合も一応掲載しておくと以下のように普通に取れています。
なんで今まで気づかなかったのか。。

mySite = OneDrive for Business?

上記ですが、そもそもOneDirve for Business はSharePoint上の個人用サイト(マイサイト)のライブラリなのでmySite=OneDrive for Business と言えますね。
SharePoint Server の個人用サイトの概要 – SharePoint Server | Microsoft Learn

いつから出来たのか? →V2からだった!

はっきりしないのはいつからこれ使えてたの?という点ですが、ネタ元に確認しても、結構前からあった記憶もあるがそれをいつ認識したかは定かではない。という感じでした。
迷宮入りかと思いきや、触ってみて以下が判明しました。

TIPS上記のコネクタでV1(無印)だと存在しなかった!
そのためV2コネクタから出来たと思われる!

無印のコネクタだとこのようにエラーとなります。そもそもプロパティにありませんでした。
V2コネクタから追加されたようです。

V1とV2の取得プロパティ比較

気になったので、アプリで取得した内容を比較してみました。V2になって結構増えていました。
V1は18個、V2は31個でした。V2でmySiteやその他項目が追加されたようですね。

上がV1で18個、下がV2で31個

コネクタ情報

上記ですが、コネクタの公式ページにV1とV2のそれぞれの戻り値の説明と記載があります。(上の不要だったな)
V1の戻り値は「User」となっていて、V2の戻り値は「GraphUser_V1] となっています。
それそれ「User(人)」、「GraphUser_V1」に戻り値の内容が記載されています。
V1 の戻り値のUserにはたしかにmySiteは載っていないですね。

Office 365 Users – Connectors | Microsoft Learn

MyProfile、UserProfileともに同じ戻り値、V2ではGraphUser_V1となっている


V1の戻り値のUser mySiteはない。項目も少ない(なぜか記載は17個、18取れてた気がするがスルー)

GraphUser_V1の戻り値一覧と説明。ここでmySiteも追加されている

V2って結構前からあるよな? → いつできたか判明!

上記でV2から追加されたんだなーと把握できました。が、そもそもこのV2コネクタって自分が触りだした2020年ごろからもう有ったよな?と思い、ググってみると、以下記事で吉田さんが載せてました。
なんと2018年の1月ですね。ということでかーなり前からあったということが判明しました!

(日本語) 新しくなったOffice 365 Users コネクター – Taiki’s Memorandum (tyoshida.me)

V1とV2の項目比較表もあり、しっかりmySiteが載っている。(OneDriveってことだとは記載はなかったが)

どう活用できるか

OneDrive for Business のコネクタでは、ファイル作成後にファイル情報を取っても、ルート以降のパスしか情報をくれません。
そのためメールでフルパスを送りたい場合などは、共有パスを作成するアクションなどでリンクを作って送ったり、
そのテナント内では共通で使えるホスト部分までを載せて、とりあえずその人のルートまでのリンクを載せる。
などの対応だったかと思います。(ほかにやり方があるのかもですが、違ったらすいません。)
アプリの場合でも同様ですね。ホスト部分のURLでそのテナント内ではルートへ飛ばすことは出来ましたが、別テナントへインポートの際などは書き換えが必要でした。

TIPSOneDriveのルートは個人名部分まで入れなくても、「https://○○-my.sharepoint.com/」の部分まで入れればその人のルートに飛びます。
ただ、これだと配下のファイルとつっくけての利用が出来ないですし、他のテナントへインポートする場合などはURLが変わるので適宜変更や管理リストに持たす、環境変数に持たすなどの対応が必要でした。
(mySiteで取れるのを知らなかったので)

上記のようにログインユーザーや指定ユーザーのOneDriveルートのパスが取れることが分かったので、
作成ファイルとつなげてフルパスの作成や、別テナントへインポートの場合も、
この実装をしておけば書き換えは不要となります。

おわりに

ということで、
実はOneDrive for Businessのルートパス取得は2018年1月から存在していた!Office365Userコネクタに!
でした。知っていた人はなんで教えてくれなかったのでしょうw
そもそもOneDriveコネクタで返してくれよーとは思いますが。それでは。

ぴーたくん

すべてを網羅して把握するって難しいよねー。
みんなの知識を共有しあって、互いに知識を高めて行きたいよねー。
※もっとわかりやすく公式が教えておいてほしいという思いもあるけど。。(心の声

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS