Power Automateで実行されている Office スクリプトのトラブルシューティング

Power Automate では、独立した Excel セッションで、お客様に代わってスクリプトが実行されます。 これにより、特定のスクリプトやシナリオに問題が発生する可能性のある動作の変更が発生します。 Power Automate プラットフォームスクリプトライターが知っておくべき制限事項と動作もあります。 「 Office スクリプトプラットフォームの制限と要件のトラブルシューティング」の記事を参照してください。その情報の多くは、フロー内のスクリプトにも適用されます。

ヒント

Power Automate で Office スクリプトを使用し始めたばかりの場合は、「Power Automate で Office スクリプトを実行 する」から始めて、プラットフォームについて学習してください。

重要

Power Automate で Office スクリプトを使用するには、Microsoft 365 のビジネス ライセンスが必要です。 Office 365 Enterprise E1 および Office 365 F3 ライセンスでは、Power Automate でスクリプトを使用できますが、Excel では Power Automate の統合は直接行われません。

相対参照を避ける

Power Automate では、選択した Excel ブック内のスクリプトが代わりに実行されます。 この場合、ブックが閉じられる可能性があります。 Workbook.getActiveWorksheetなど、ユーザーの現在の状態に依存する API は、Power Automate で動作が異なる場合があります。 これは、API がユーザーのビューまたはカーソルの相対的な位置に基づいており、その参照が Power Automate フローに存在しないためです。

一部の相対参照 API では、Power Automate でエラーがスローされます。 他のユーザーには、ユーザーの状態を意味する既定の動作があります。 スクリプトを設計するときは、ワークシートと範囲に絶対参照を使用してください。 これにより、ワークシートが並べ替えられる場合でも、Power Automate フローの整合性が保たれます。

Power Automate フローで失敗するスクリプト メソッド

次のメソッドは、Power Automate フローのスクリプトから呼び出されたときにエラーをスローし、失敗します。

クラス Method
グラフ activate
Range select
ブック getActiveCell
ブック getActiveChart
ブック getActiveSlicer
ブック getSelectedRange
ブック getSelectedRanges

Power Automate フローで既定の動作を持つスクリプト メソッド

次のメソッドでは、ユーザーの現在の状態の代わりに、既定の動作が使用されます。

クラス Method Power Automate の動作
ブック getActiveWorksheet ブックの最初のワークシート、または Worksheet.activate メソッドによって現在アクティブ化されているワークシートを返します。
ワークシート activate Workbook.getActiveWorksheet目的でワークシートを作業中のワークシートとしてマークします。

Power Automate で更新が完全にサポートされていない

Power Automate で実行すると、Office スクリプトはほとんどのデータを更新できません。 PivotTable.refreshなどのほとんどの更新メソッドは、フローで呼び出されたときに何も行われません。 Workbook.refreshAllDataConnections は、PowerBI がソースである場合にのみ更新されます。 さらに、Power Automate では、ブック リンクを使用する数式のデータ更新はトリガーされません。

Power Automate フローで何も行わないスクリプト メソッド

次のメソッドは、Power Automate を使用して呼び出されたときにスクリプトで何も実行しません。 それでも正常に返され、エラーはスローされません。

クラス Method
PivotTable refresh
ブック refreshAllPivotTables
ワークシート refreshAllPivotTables

Power Automate で異なる動作を持つスクリプト メソッド

次の方法は、Power Automate フローで Excel を実行する場合とは異なる動作をします。

クラス Method Power Automate の動作
ブック refreshAllDataConnections PowerBI ソースのみを更新します。 他のソースの場合、メソッドは正常に返されますが、何も返しません。

ファイル ブラウザー コントロールを使用してブックを選択する

Power Automate フローの 実行スクリプト ステップを作成するときは、フローの一部であるブックを選択する必要があります。 ブックの名前を手動で入力するのではなく、ファイル ブラウザーを使用してブックを選択します。

[ピッカー ファイル ブラウザーの表示] オプションを示す Power Automate Run スクリプト アクション。

Power Automate の制限事項の詳細と、ブックの動的な選択に対する潜在的な回避策の詳細については、 Microsoft Power Automate コミュニティのこのスレッドを参照してください。

配列全体をスクリプト パラメーターとして渡す

Power Automate を使用すると、ユーザーは配列を変数として、または配列内の単一の要素としてコネクタに渡すことができます。 既定では、フロー内に配列を構築する単一の要素を渡します。 配列全体を引数として受け取るスクリプトまたはその他のコネクタの場合は、[配列 全体を入力に切り替える ] ボタンを選択して、配列を 1 つの完全なオブジェクトとして渡す必要があります。 このボタンは、各配列パラメーター入力フィールドの右上隅にあります。

コントロール フィールドの入力ボックスに配列全体を入力するように切り替えるボタン。

タイム ゾーンの違い

Excel ファイルには、固有の場所やタイムゾーンがありません。 ユーザーがブックを開くたびに、そのユーザーのローカル タイムゾーンが日付計算に使用されます。 Power Automate では常に UTC が使用されます。

スクリプトで日付または時刻を使用する場合、スクリプトをローカルでテストするときと Power Automate を使用して実行する場合の動作に違いがある可能性があります。 Power Automate を使用すると、時間の変換、書式設定、調整を行うことができます。 Power Automate でこれらの関数を使用する方法と Power Automate のスクリプトとの間でデータを渡す方法については、「フロー内の日付と時刻の操作」を参照して、スクリプトの時間情報を提供する方法を学習します。

スクリプト パラメーター フィールドまたは返された出力が Power Automate に表示されない

スクリプトのパラメーターまたは返されたデータが Power Automate フロー ビルダーに正確に反映されない理由は 2 つあります。

  • Excel Business (Online) コネクタが追加されてから、スクリプト署名 (パラメーターまたは戻り値) が変更されました。
  • スクリプト署名では、サポートされていない型が使用されます。 Office Scripts パラメーターと戻り値の型の制限に対して型を確認します。

スクリプトの署名は、 作成時に Excel Business (Online) コネクタと共に格納されます。 古いコネクタを削除し、新しいコネクタを作成して、最新のパラメーターを取得し、[ スクリプトの実行 ] アクションの値を返します。

Power Automate フローでは使用できない一部の Web API

TextEncoderCryptoなどの一部の Web API は、Power Automate フローで Office スクリプトを実行するときに使用できない場合があります。 Web API の完全な一覧については、「MDN Web API」を参照してください。

Power Automate はエラー *API* is not definedを返します。 *API* は、サポートされていない API を使用するスクリプトを実行するときに、 TextEncoderなどのライブラリを指定します。

関連項目