2024年9月25日 (水)

Adobestock_522400980

Power Automate を使って複数の Excel ファイルを一括生成し、それぞれの Excel ファイルで特定のOffice Scripts を実行するようにフローを組んでいたとします。Office Scripts を実行するわけですから、 Excel Online (Business) コネクターを使います。このコネクターには次の2つのスクリプト実行アクションがあります。

  • SharePoint ライブラリからスクリプトを実行する
  • スクリプトの実行

20240925_190937

このコネクターに最初に追加されたのは「スクリプトの実行」であり、スクリプトはユーザーの OneDrive に格納されている前提でした。ですが、そのあと、スクリプトを SharePoint のドキュメント ライブラリに格納して複数ユーザーで共有利用ができるようになりました。そこで新たに追加されたアクションが " SharePoint ライブラリからスクリプトを実行する" です。

20240925_190421

さて、従来からある "スクリプト実行" アクションは、スクリプトがOneDrive (Business) に格納されていることが前提であるため同時アクセスは考慮されていません。

たとえば、ファイル作成をする際に Apply to each を使って処理するときに Apply to each には「コンカレンシー制御」オプションがあります。既定ではオフで最大50まで指定できます。

20240925_190644

これを使えばファイル作成をバトンリレー式に1つのファイルが作成されてから次のファイルを作成するという処理を複数のファイル作成を同時に一斉作成できるようになります。ならば、このオプションを有効にしてファイル作成後にいっきに各ファイルで Office Script も動かそうか考えるわけですが、この場合はスクリプトファイルへの同時アクセスが生じることになりフローはエラーとなります。

ですが、後発のアクションである「SharePoint ライブラリからスクリプトを実行する」を利用する場合は、最初から複数同時アクセスを考慮しているため Apply to each のコンカレンシー制御を有効にしても問題なくフローが実行できます。

試しにコンカレンシー制御をおこなわずに5つのファイルを一括作成してみたところ、Apply to each には42秒ほどかかりました。

20240925_190615

ですが、コンカレンシー制御を有効化したところわずか9秒に短縮されました。

20240925_190724

このようにコンカレンシー制御はフローのロジックによって向き不向きがありますが、うまく活用できればフローの実行時間が短縮できます。