Office Scripts

[Office Scripts]任意の場所にあるスクリプトを実行する方法

通常、Office スクリプトを実行するPower Automateフローを作成者とは別のユーザーで実行すると、エラーが発生して上手くいきません。

この問題を上手く解決する方法をからめもさん( @karamem0 )さんが発見し、ブログ記事で公開してくださいました。

詳細は上記のからめもさんの記事をご参照いただきたいのですが、肝となるのは実行するスクリプトをファイルのIDから生成したスクリプトIDとして指定することで、早い話がアクセス可能であれば任意の場所にあるスクリプトを実行できるというわけですね。
さっそく実際にフローを動かして動作確認してみます。

スクリプトの準備

まずは実行するスクリプトを作成します。
動作確認が目的なので、引数として受け取った値をセルに書き込むだけの簡単なスクリプトです。

function main(workbook: ExcelScript.Workbook, value: string)
{
  workbook.getFirstWorksheet(true).getRange("A1").setValue(value);
}

上記スクリプトを「SrcScript.osts」として保存し、OneDrive上の適当なフォルダに移動しました。
作成したスクリプトは通常、OneDrive → ドキュメント → Office Scripts フォルダの中に「osts」ファイルとして保存され、移動してしまうとエディター上で表示されなくなり、「スクリプトの実行」アクションでスクリプトを選択する際にも候補として挙がってこなくなります。

任意の場所にあるスクリプトを実行するPower Automateフロー

スクリプトの準備が出来たら、Power Automateでフローを作成します。

フロー全体

1. パスによるファイル メタデータの取得

「パスによるファイル メタデータの取得」アクションでスクリプトファイル(osts)のIDを取得します。

2. 作成

「作成」アクションで下記式を実行し、取得したファイルIDを元にしてスクリプトIDを生成します。

@{concat(encodeUriComponent('ms-officescript://onedrive_business_itemlink/'), split(outputs('パスによるファイル_メタデータの取得')?['body/Id'], '.')[1])}

3. スクリプトの実行

最後にスクリプトを実行します。
ここでのポイントは「スクリプト」の値を「カスタム値」として、上記アクションで生成したスクリプトIDで指定することです。
また、スクリプトに渡すパラメーターが必要であれば、「ScriptParameters」で指定します。

実行画面

実際にフローを実行したときの画面は下図の通りで、問題無くスクリプトが動作していることが確認できます。

任意の場所にあるスクリプトが実行できるようになったことで、からめもさんがブログで書いているように、作成者でなくてもフローからスクリプトを実行できますし、実際に試してはいませんが動的に作成したスクリプトを実行することもできるでしょう。

からめもさんさん、素晴らしい手法を公開していただき、ありがとうございました!

関連記事

Power Automate DesktopのSQLステートメントの実行アクションを使ってクラウドフローを実行する方法前のページ

[Power Automate Desktop]PDFで指定したキーワードが含まれているページのみを印刷するフロー次のページ

関連記事

  1. Office アドイン

    Build 2020で個人的に気になったOfficeやPower Automateの発表

    Microsoftの開発者向けイベント「Build 2020」がオンラ…

  2. Power Automate

    Power AutomateのUIフローを試してみました。

    ※2019年11月時点では、UIフローはまだプレビュー版であり、今後、…

  3. Office Scripts

    [Office Scripts]セルの読み書き方法

    今回は、Office Scriptsの基本となるセルの読み書き方法をご…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP