Office Scripts

[Office Scripts]ワークシート関数を実行しようとして失敗した話

下記記事でも紹介していますが、Office アドインではワークシート関数を実行できます。

Office Scriptsでも同じようにFunctionsオブジェクトからAVERAGE関数を実行しようとしたところ、「要求された操作を実行することはできません。」エラーが発生して結果を取得できませんでした。

//ワークシート関数実行
async function main(context: Excel.RequestContext) {
let sheet = context.workbook.worksheets.getActiveWorksheet();
let range = sheet.getRange("A1:A4");
range.values = [[10], [20], [30], [40]];
let ave = context.workbook.functions.average(range); //AVERAGE関数実行
ave.load("value");
await context.sync();
console.log(ave.value); //2020.05時点ではエラー
}

いろいろ試してみたのですが、どの関数でも同じエラーが発生しました。
シンプルなABS関数すら実行できなかったので、現時点(2020年5月)ではまだワークシート関数の呼び出しができないのかもしれません。
(もちろん、WEBSERVICEやFILTERXMLといったWeb関数も実行できません。)

Office ScriptsからExcelのワークシート関数が実行でき、なおかつPower Automateからの入出力ができるようになれば、フローの裏側でExcelの演算機能が呼び出せて便利だと思ったのですが、中々上手くいかないようです。
今後に期待、ですね!


2020/7/13 追記:
従来のスクリプトをサポートするための Office スクリプト非同期 Api の使用」にある通り、Office ScriptsのAPIモデルが刷新され、現在のモデルではFunctionsオブジェクトが取得できなくなったため、ワークシート関数の実行が出来なくなりました。
(私が方法を知らないだけかもしれませんが・・・)
Office Scriptsからのワークシート関数実行に関しては、引き続き調べていきたいと思います。

2020/8/13 追記:
UserVoiceにOffice Scriptsでもワークシート関数を使えるようにしてほしいとの要望が上がっていました。

Microsoftからの回答は下記の通りです。

Thank you for sending Microsoft feedback. Your input is valuable to us and helps improve our products.
For now, worksheet functions are not yet enabled.
Worksheet functions requires some additional work for us to expose. We are going to look into that in the coming weeks and understand the work needed little better.

https://excel.uservoice.com/forums/274580-excel-for-the-web/suggestions/40917655-enable-worksheetfunction-in-theoffice-script より

現時点ではワークシート関数は使えませんが、今後機能追加される予定はあるようです。
それまでは、下記コードのように、セルの値として設定するしかなさそうですね。

//セルの値としてワークシート関数を指定して実行
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let rngSrc = sheet.getRange("B2:B4");
rngSrc.setValues([[15], [35], [85]]);
let rngTgt = sheet.getRange("B5");
rngTgt.setNumberFormat("General"); //セルの書式を標準に設定
rngTgt.setFormula("=AVERAGE(" + rngSrc.getAddress() + ")");
console.log(rngTgt.getValue());
}

関連記事

[Office Scripts]シート上のすべての図形に対して処理を行う方法前のページ

Outlookを使ってGmail送信を行うVBAマクロ次のページ

関連記事

  1. Office Scripts

    [Office Scripts]テーブルを追加する方法

    今回は、Office Scriptsのスクリプトでテーブルを作成する方…

  2. Office アドイン

    Office Scriptsってどんな機能?

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

  3. Office Scripts

    [Office Scripts]スクリプト ボタンの紹介

    お久しぶりのOffice スクリプトの記事です。昨年の11月にボタ…

  4. Office Scripts

    [Office Scripts]Power AutomateでOneDriveにファイルがアップされ…

    下記記事でも書いている通り、Power AutomateにはOffic…

  5. Office Scripts

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

    通常、Office スクリプトを実行するPower Automateフ…

  6. Office Scripts

    Microsoft 365 Virtual Marathon 2021でOffice Scripts…

    先月末(日本時間だと4月27日 ~ 29日にかけて)にMicrosof…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

zh-CNzh-TWenfrdejakorues

最近の記事

アーカイブ

PAGE TOP