Power Automate で実行されている Office スクリプトのトラブルシューティング
Power Automate を使用すると、Office スクリプトの自動化を次のレベルに進めます。 ただし、Power Automate では、独立した Excel セッションでスクリプトが代わりに実行されるため、注意すべき重要な点がいくつかあります。
ヒント
Power Automate で Office スクリプトを使用し始めたばかりの場合は、「Power Automate で Office スクリプトを実行 する」から始めて、プラットフォームについて学習してください。
相対参照を避ける
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
更新メソッドは、フローで呼び出されたときに何も実行しません。 さらに、Power Automate では、ブック リンクを使用する数式のデータ更新はトリガーされません。
Power Automate フローで実行するときに何も行わないスクリプト メソッド
次のメソッドは、Power Automate を使用して呼び出されたときにスクリプトで何も実行しません。 それでも正常に返され、エラーはスローされません。
クラス | Method |
---|---|
PivotTable | refresh |
ブック | refreshAllDataConnections |
ブック | refreshAllPivotTables |
ワークシート | refreshAllPivotTables |
ファイル ブラウザー コントロールを使用してブックを選択する
Power Automate フローの 実行スクリプト ステップを作成するときは、フローの一部であるブックを選択する必要があります。 ブックの名前を手動で入力するのではなく、ファイル ブラウザーを使用してブックを選択します。
Power Automate の制限事項の詳細と、ブックの動的な選択に対する潜在的な回避策の詳細については、 Microsoft Power Automate コミュニティのこのスレッドを参照してください。
配列全体をスクリプト パラメーターとして渡す
Power Automate を使用すると、ユーザーは配列を変数として、または配列内の単一の要素としてコネクタに渡すことができます。 既定では、フロー内に配列を構築する単一の要素を渡します。 配列全体を引数として受け取るスクリプトまたはその他のコネクタの場合は、[配列 全体を入力に切り替える ] ボタンを選択して、配列を 1 つの完全なオブジェクトとして渡す必要があります。 このボタンは、各配列パラメーター入力フィールドの右上隅にあります。
タイム ゾーンの違い
Excel ファイルには、固有の場所やタイムゾーンがありません。 ユーザーがブックを開くたびに、そのユーザーのローカル タイムゾーンが日付計算に使用されます。 Power Automate では常に UTC が使用されます。
スクリプトで日付または時刻を使用する場合、スクリプトをローカルでテストするときと Power Automate を使用して実行する場合の動作に違いがある可能性があります。 Power Automate を使用すると、時間の変換、書式設定、調整を行うことができます。 Power Automate および Script パラメーターでこれらの関数を使用する方法と、Power Automate の戻り値の型を使用してスクリプトの時刻情報を提供する方法については、「フロー内での日付と時刻の操作」を参照してください。
スクリプト パラメーター フィールドまたは返された出力が Power Automate に表示されない
スクリプトのパラメーターまたは返されたデータが Power Automate フロー ビルダーに正確に反映されない理由は 2 つあります。
- Excel Business (Online) コネクタが追加されてから、スクリプト署名 (パラメーターまたは戻り値) が変更されました。
- スクリプト署名では、サポートされていない型が使用されます。 Office Scripts パラメーターと戻り値の型の制限に対して型を確認します。
スクリプトの署名は、 作成時に Excel Business (Online) コネクタと共に格納されます。 古いコネクタを削除し、新しいコネクタを作成して、最新のパラメーターを取得し、[ スクリプトの実行 ] アクションの値を返します。