Office スクリプトを実行する Power Automate フローを共有

ツイートしたこの件について、なんとか解決できました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Office Scriptsを実行する <a href="https://twitter.com/hashtag/PowerAutomate?src=hash&amp;ref_src=twsrc%5Etfw">#PowerAutomate</a> フローを、そのフローを共有した他のユーザーでも実行したいがこれってできるのかな？もちろん、実行するOffice Scriptsも共有した上で。使い方間違ってる？</p>&mdash; Tetsuya Odashima (@TetsuyaOoooo) <a href="https://twitter.com/TetsuyaOoooo/status/1425392327158210560?ref_src=twsrc%5Etfw">August 11, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

なお、この件は公式ドキュメントに載っておらず検証結果から見出した方法なので、今後の仕様変更などにより挙動が変わるかもしれません。ご了承ください。


# Office スクリプトとは

Office スクリプトは、Excel on the web (Web 版 Excel) で利用できるもので、Excel 上の操作を TypeScript で記録するマクロ機能です。記録されたスクリプトは編集 (新規に作成もできる) したり、他のユーザーと共有することができます。また Power Automate を使ってスクリプトを実行することもできます。
詳しくは、以下のドキュメントを参照してください。

https://docs.microsoft.com/ja-jp/office/dev/scripts/overview/excel?WT.mc_id=DX-MVP-5003113


# さっそく検証

これ以降の検証は、以下のユーザーを使って行います。

- user001...Office スクリプト (Excel ブック) と Power Automate フローの作成者
- user002...他の (共有してもらうほうの) ユーザー

なお、以下のドキュメントを参考に、Office スクリプトが有効になっていることを確認します。

https://docs.microsoft.com/ja-jp/microsoft-365/admin/manage/manage-office-scripts-settings?WT.mc_id=DX-MVP-5003113&view=o365-worldwide


## サンプルを作成

検証のサンプルとして、以下のチュートリアルのとおりに Office スクリプトと Power Automate フローを作成します。
ここでは「user001」で Office スクリプトと Power Automate フローを作成します。

https://docs.microsoft.com/ja-jp/office/dev/scripts/tutorials/excel-power-automate-manual?WT.mc_id=DX-MVP-5003113

- Office スクリプトを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/269e406e-6c04-eb47-61d6-531899dc12d2.png)

- フローを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/4d81ef42-ea28-7cb1-ef65-6d646a31456a.png)

- フローの実行結果

フローが正常に動作していることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/0721e6ae-0294-c4b8-e11c-955608305669.png)

Office スクリプトも正常に動作していることを確認します。
※フローから Office スクリプトを実行すると、日時は UTC で出力されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/36ef012d-06f7-164f-06f5-72caf499dac8.png)

そして、他のユーザーにフローを共有 (※) し、「使用する接続」を確認します。
ここでは「user002」に共有します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/e6b2bf5b-ad67-62df-1fce-91fd351b980f.png)

※以下のいずれかの方法でフローを共有します。

- 共同所有者として一覧を追加する

https://docs.microsoft.com/ja-jp/power-automate/create-team-flows?WT.mc_id=DX-MVP-5003113#add-an-owner-to-a-cloud-flow

- 実行専用のアクセス許可でクラウド フローを共有する

https://docs.microsoft.com/ja-jp/power-automate/create-team-flows?WT.mc_id=DX-MVP-5003113#share-a-cloud-flow-with-run-only-permissions


## 他のユーザーでフローを実行してみる

ここでは「user002」で操作します。


### フローを実行

それでは、他のユーザーでフローを実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/cc062f07-5bac-208b-4312-7e5f4651e17c.png)


### 実行履歴を確認

「[スクリプトの実行 (Run script)](https://docs.microsoft.com/ja-jp/connectors/excelonlinebusiness/?WT.mc_id=DX-MVP-5003113#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C)」アクションで**「スクリプトが見つかりません。共有が解除されたか、削除された可能性があります。」**というエラーが発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/b2ebd6f7-eabd-5c3d-f304-370c058000b5.png)

エラー内容から察すると、フローで実行する Office スクリプトが共有できていないからだと思ってしまいますが、他のユーザーに対象の Office スクリプトを共有しても実行結果は同じでした。

https://support.microsoft.com/ja-jp/office/226eddbc-3a44-4540-acfe-fccda3d1122b?WT.mc_id=DX-MVP-5003113


### 実行するフローで使用する接続

他のユーザー (user002) でフローを実行する際、「接続とアクションを確認する」から接続「[Excel Online (Business) コネクタ](https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/?WT.mc_id=DX-MVP-5003113)」を確認すると、実行したユーザー (user002) の接続が使われることがわかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/8115c273-9252-fb19-8b40-3f6fe44381e6.png)

前述したように、この設定のままでフローで使用 (実行) する Excel ブック、および Office スクリプトを他のユーザー (user002) に共有しても同じエラーが発生します。

フローを他のユーザー (user002) に共有した際、以下のように表示されていましたので実行時はフローの作成したユーザー (user001) の接続が使われると思っていましたが、フローを実際に実行する時は、フローを実行するユーザーの接続が使われるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/72adfb26-8037-cc09-cfd9-8dd419e3ed38.png)


### 実行するフローで使用する接続を変更

では、実行時に使われる接続を変更します。
フローの詳細ページにある「実行のみのユーザー」の [編集] をクリックします。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/8a27b9ed-4295-3ae5-1215-78d998da610b.png)

「使用する接続」にある「[Excel Online (Business) コネクタ](https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/?WT.mc_id=DX-MVP-5003113)」が**「実行専用のユーザーによって提供されました」**が選択されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/e8125151-dab9-4ba2-ed51-a9caa580723d.png)

この選択を**「この接続 (フローの作成者のアカウント) を使用する」**の接続に変更して保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/71772df5-a104-8d49-999c-5def88910af7.png)


### フローを実行 (ふたたび)

それでは改めて、他のユーザーでフローを実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/23f36f4a-a8fb-f42e-08dd-a0e9cec0929e.png)


### 実行履歴を確認 (ふたたび)

フローが正常に動作していることを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/498b6f2b-03a4-f9c8-565d-d05fed86d09c.png)

Office スクリプトも正常に動作していることを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/000f611e-dac4-7fab-e3d6-de2fb2f64ba4.png)


# まとめ (検証結果)

Office スクリプトを実行するフローを共有した他のユーザーで実行した場合、フローを実行したユーザーの [Excel Online (Business) コネクタ](https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/?WT.mc_id=DX-MVP-5003113)の接続が使われます。

フローでは、共有したユーザーに Excel ブックや Office スクリプトを共有しても、Office スクリプトを認識することができなかったため、フローが失敗したと推測します。

上記のことから、フローを実行する際に使用される Excel Online (Business) コネクタの接続をフローの作成者 (＝ Office スクリプトの作成者) のものに切り替えることで、フローを共有した他のユーザーでもフロー内の Office スクリプトが実行できるようになります。