Share via


Office Scripts のトラブルシューティング

Office スクリプトを開発するときに、間違いを犯す可能性があります。 大丈夫です。 問題を見つけ、スクリプトを完全に動作させるために役立つツールがあります。

注:

Power Automate を使用した Office スクリプトに固有のトラブルシューティングのアドバイスについては、「Power Automate で実行されている Office スクリプトのトラブルシューティング」を参照してください。

プラットフォームの制限と要件

Excel、Power Automate、またはその他のテクノロジによる Office スクリプト プラットフォームの制限の詳細な一覧については、「 Office スクリプトを使用したプラットフォームの制限と要件」を参照してください。

スクリプト エラー

Office スクリプト エラーは、次の 2 つのカテゴリのいずれかに分類されます。

  • コンパイル時エラーまたは警告
  • ランタイム エラー

コンパイル時エラー

コンパイル時のエラーと警告は、最初にコード エディターに表示されます。 これらはエディターの波状の赤い下線で表示されます。 [コード エディター] 作業ウィンドウの下部にある [ 問題 ] タブにも表示されます。 エラーを選択すると、問題の詳細が表示され、解決策が提案されます。 コンパイル時エラーは、スクリプトを実行する前に対処する必要があります。

コード エディターのホバー テキストに表示されるコンパイラ エラー。

オレンジ色の警告の下線と灰色の情報メッセージが表示される場合もあります。 これらは、スクリプトが意図しない影響を与える可能性があるパフォーマンスの提案やその他の可能性を示します。 このような警告は、無視する前に注意深く調べる必要があります。

ランタイム エラー

ランタイム エラーは、スクリプトのロジックの問題が原因で発生します。 これは、スクリプトで使用されるオブジェクトがブックに含まれていない、テーブルの書式設定が予想とは異なる、またはスクリプトの要件と現在のブックとの間に若干の相違がある可能性があります。 次のスクリプトは、"TestSheet" という名前のワークシートが存在しない場合にエラーを生成します。

function main(workbook: ExcelScript.Workbook) {
  let mySheet = workbook.getWorksheet('TestSheet');

  // This will throw an error if there is no "TestSheet".
  mySheet.getRange("A1");
}

一部のランタイム エラーは、Excel on the webで一度に多くのデータを書き込もうとするなど、プラットフォームの制限を超えることによって発生します。 潜在的な落とし穴の完全な一覧については、「 Office スクリプトを使用したプラットフォームの制限と要件 」を参照してください。

コンソール メッセージ

コンパイル時エラーとランタイム エラーの両方で、スクリプトの実行時にコンソールにエラー メッセージが表示されます。 問題が発生した行番号を指定します。 問題の根本原因は、コンソールで示されているものとは異なるコード行である可能性があることに注意してください。

次の図は、 明示的な any コンパイラ エラーのコンソール出力を示しています。 エラー文字列の先頭にあるテキスト [5, 16] をメモします。 これは、エラーが 16 文字から始まる 5 行目であることを示します。 明示的な 'any' エラー メッセージを表示するコード エディター コンソール。

次の図は、ランタイム エラーのコンソール出力を示しています。 ここでは、スクリプトは既存のワークシートの名前を持つワークシートを追加しようとします。 ここでも、エラーの前にある "2 行目" を書き留めて、調査する行を示します。 'addWorksheet' 呼び出しからのエラーを表示するコード エディター コンソール。

コンソール ログ

ステートメントを使用してメッセージを画面に console.log 出力します。 これらのログには、変数の現在の値、またはトリガーされているコード パスが表示されます。 これを行うには、任意のオブジェクトをパラメーターとして を呼び出 console.log します。 通常、 string はコンソールで読み取る最も簡単な型です。

console.log("Logging myRange's address.");
console.log(myRange.getAddress());

渡された console.log 文字列は、コード エディターのログ コンソールの作業ウィンドウの下部に表示されます。 ログは [出力 ] タブにありますが、ログが書き込まれるとタブに自動的にフォーカスが移動します。

ログはブックに影響しません。

[自動化] タブが表示されないか、Office スクリプトが使用できない

次の手順は、[ 自動化 ] タブが Excel に表示されない問題のトラブルシューティングに役立ちます。

  1. Microsoft 365 ライセンスに Office スクリプトが含まれていることを確認します
  2. サード パーティの Cookie が有効になっていることを確認します (Excel on the webを使用する場合)。
  3. 管理者がMicrosoft 365 管理センターで Office スクリプトを無効にされていないことを確認します。
  4. 管理者が Office スクリプトをブロックするようにグループ ポリシーを構成していない (Windows のみ) ことを確認します
  5. WebView2 (Windows のみ) をインストールします。
  6. テナントに外部ユーザーまたはゲスト ユーザーとしてログインしていないことを確認します。

重要

Teams で Excel を使用する場合、Office スクリプトは Teams on the web でのみサポートされます (Windows、Mac、iOS、Android 用の Teams ではサポートされません)。

注:

SharePoint に格納されているスクリプトが、最近使用したリストに常に表示されないという既知の問題があります。 これは、管理者が Exchange Web サービス (EWS) をオフにしたときに発生します。 SharePoint ベースのスクリプトには引き続きアクセスでき、ファイル ダイアログから使用できます。

スクリプトのスケジュール設定に関する問題

スクリプトをスケジュールするには、Microsoft 365 のビジネス ライセンスが必要です。 これは、スケジュールされたスクリプトに電力を供給する Power Automate フローに必要です。 このフローのエラーは、スケジューリングに問題がある場合に表示されます。 Power Automate でフローを手動で更新する必要がある場合があります。このフローは [マイ フロー] の下に一覧表示されます。

次の一覧は、発生する可能性のある一般的なエラーを示しています。

  • アクセス トークンの有効期限 UTC 時刻が現在の UTC 時刻より前です。: サービスへのサインインとスクリプトのスケジュール設定の間に時間が長すぎます。 コード エディターでスクリプトを再度開くか、ブックを再読み込みして、もう一度スケジュールを設定します。

ヘルプ リソース

Stack Overflow は、コーディングの問題を支援する開発者のコミュニティです。 多くの場合、Stack Overflow のクイック検索を使用して、問題の解決策を見つけることができます。 そうでない場合は、質問し、"office-scripts" タグでタグを付けます。 Office アドインではなく、Office スクリプトを作成していることをメンションしてください。

関連項目