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 Scripts

    [Office Scripts]London Excel Meetup Groupのイベント紹介

    以前、イギリスのExcelコミュニティでOffice Scriptsを…

  2. Office Scripts

    [Office Scripts]Power Automateのフローでパラメーターの受け渡しを行う方…

    下記記事でも書いていますが、Power Automateのフローでパラ…

  3. Office アドイン

    Office Scriptsってどんな機能?

    昨年の11月、Ignite 2019で発表されたオンライン版Excel…

  4. Office Scripts

    [Office Scripts]Power Automateからスクリプトを動的に書き換えて実行する…

    ※記事中でも書いていますが、本記事はPower Automateのフロ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP