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 の制限事項の詳細と、ブックの動的な選択に対する潜在的な回避策の詳細については、 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
TextEncoder
やCrypto
などの一部の Web API は、Power Automate フローで Office スクリプトを実行するときに使用できない場合があります。
Web API の完全な一覧については、「MDN Web API」を参照してください。
Power Automate はエラー *API* is not defined
を返します。 *API*
は、サポートされていない API を使用するスクリプトを実行するときに、 TextEncoder
などのライブラリを指定します。
関連項目
Office Scripts