トラブルシューティング

最も経験豊富な開発者でさえ、最初のプラットフォームでコードを正しく記述することはめったにありません。 トラブルシューティングが開発プロセスの重要な部分を占めますイン このセクションでは、Google Chat でコンテンツを検出、理解し、 スクリプト内のエラーをデバッグできます。

エラー メッセージ

スクリプトでエラーが発生すると、エラー メッセージが表示されます。メッセージ には、トラブルシューティングに使用する行番号が伴います。基本的な 2 つの 表示されるエラーのタイプ(構文エラーとランタイム エラー)。

構文エラー

構文エラーは、JavaScript に準拠しないコードを記述すると発生します 文法の誤りが検出され、スクリプトを保存するとすぐにエラーが検出されます。 たとえば、次のコード スニペットには構文エラーが含まれています。

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

この構文の問題は、4 番目の末尾に ) 文字がないことです。 追加します。スクリプトを保存しようとすると、次のエラーが表示されます。

引数リストの後に ) がありません。(4 行目)

通常、この種のエラーは検出されることから、トラブルシューティングが簡単です。 通常は単純な原因で発生します保存できません: 構文エラーが含まれるファイルです。この場合、有効なコードのみが できます。

ランタイム エラー

これらのエラーは、関数やクラスを誤って使用すると発生し、 検出されます。たとえば、次のコードがあるとします。 ランタイム エラーが発生します。

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

コードは正しい形式ですが、値「john」を渡しますの MailApp.sendEmail を呼び出す際のメールアドレス。これは 有効なメールアドレスである場合、スクリプトの実行時に次のエラーがスローされます。

無効なメールアドレス: john(5 行目)

エラーのトラブルシューティングが困難なのは 関数に渡される関数は、コード内に記述されずに pull される スプレッドシート、フォーム、その他の外部データソースから取り込むことができます。デバッグの使用 エラーの原因の特定には、下記の手法が役立ちます。

一般的なエラー

以下に、一般的なエラーとその原因を示します。

サービスの呼び出し回数が多すぎます: <アクション名>

このエラーは、特定のアクションに対する 1 日の割り当てを超過したことを示します。 たとえば、1 対 1 で送信したメールの数が多すぎると、このエラーが発生することがあります。 1 日です。割り当ては、コンシューマ、ドメイン、リソースの各レベルで 内容であり、事前の予告なく予告なく変更されることがあり、 Google からのお知らせです。さまざまなアクションの割り当て上限は、 Apps Script の割り当てに関するドキュメント

サーバーを利用できません。またはサーバーエラーが発生しました。もう一度お試しください

このエラーには、いくつかの原因が考えられます。

  • Google のサーバーまたはシステムが一時的に利用できなくなっています。しばらくお待ちください スクリプトを再度実行してみてください
  • スクリプトに、対応するエラーのないエラーがあります 表示されます。スクリプトをデバッグして、問題を特定できるかどうか試します。
  • Google Apps Script に、このエラーを引き起こしているバグがあります。対象 バグレポートの検索と報告の手順については、 バグ。新しいバグを報告する前に、 他のユーザーがすでに報告していないか確認できます。

この操作を行うには承認が必要です。

このエラーは、スクリプトの実行に必要な承認がないことを示します。 スクリプト エディタまたはカスタム メニュー項目でスクリプトを実行すると、 承認ダイアログがユーザーに表示されます。ただし、スクリプトを実行する場合は、 Google サイトのページに埋め込まれたトリガーや、サービスとして実行された場合、 ダイアログを表示できず、このエラーが表示されます。

スクリプトを承認するには、スクリプト エディタを開いて任意の関数を実行します。「 承認プロンプトが表示され、スクリプト プロジェクトを承認できます。もし スクリプトに未承認の新しいサービスが含まれている場合は、スクリプトを再承認する必要があります。

このエラーは多くの場合、次のような場合に発生します。 トリガーが 承認されています。スクリプト プロジェクトへのアクセス権がない場合 (アドオンでエラーが発生しているため、 使用する場合は、通常、アドオンを使用してスクリプトを承認できます。 もう一度クリックします。トリガーが引き続き発生し、このエラーの原因となる場合は、 次のようにトリガーします。

  1. Apps Script プロジェクトの左側にある [トリガー] をクリックします。
  2. 削除するトリガーの右側にあるその他アイコン をクリックします。 &gt;トリガーを削除します

次の手順で、問題のあるアドオン トリガーを削除することもできます。 アドオンをアンインストールします。

アクセスが拒否されました: ドライブアプリまたはドメイン ポリシーにより、サードパーティのドライブ用アプリが無効になっています

ドメインの Google Workspace 管理者は アラートを Drive API を使用することにより、ユーザーは インストール、使用する方法を学びます。この設定により、ユーザーは App Engine の API を使用する Apps Script アドオンを ドライブ サービス 高度なドライブ サービス (管理者が Drive API を無効にする前にスクリプトが承認されている場合も含む)。

ただし、ドライブ サービスを使用するアドオンまたはウェブアプリが ドメイン全体のインストール 管理者によってドメイン内の一部またはすべてのユーザーにインストールされる場合、 管理者が Drive API が無効になっていても、 できます。

スクリプトにアクティブ ユーザーの ID を取得する権限がありません。

は、アクティブ ユーザーの ID とメールアドレスがアクセスできない 使用します。この警告は、 Session.getActiveUser()。 また、外部 IP アドレスへの呼び出しによっても、 Session.getEffectiveUser() スクリプトが認証モードではなく、 AuthMode.FULL。 この警告が通知されると、後続の呼び出し User.getEmail() は "" のみを返します。

この警告を解決する方法はいくつかあり、 認証モードを指定します。認可モードは、 トリガーされる関数eauthMode プロパティ イベント パラメータ

  • AuthMode.FULL で以下を検討してください。 Session.getEffectiveUser() してください。
  • AuthMode.LIMITED で、次のことを確認します。 オーナーがスクリプトを承認しました。
  • 他の認証モードでは、どちらのメソッドも呼び出さないでください。
  • 新規の Google Workspace 顧客の場合 この警告が インストール可能なトリガーを使用するには、 組織内のユーザーとしてトリガーされています。

ライブラリがない

一般的なライブラリをスクリプトに追加する場合は、 エラー メッセージが表示される場合があります。 ライブラリが依存関係としてリストされているにもかかわらず、 使用できます。理由としては、図書館にアクセスするユーザーが多すぎることが考えられます。 できます。このエラーを回避するには、次のいずれかの解決策を試してください。

  • ライブラリのコードをコピーしてスクリプトに貼り付け、ライブラリを削除する 確認します。
  • ライブラリ スクリプトをコピーして、アカウントからライブラリとしてデプロイします。必ず 元のスクリプトの依存関係を新しいライブラリに更新します。 内部 IP アドレスを使用して相互に通信できます

ライブラリ バージョンまたはデプロイ バージョンがないためエラーが発生しました。エラーコード Not_Found

このエラー メッセージは、次のいずれかを示しています。

  • デプロイされたスクリプトのバージョンが削除されました。デプロイされた バージョニングされたバージョンのスクリプトを編集する デプロイします
  • スクリプトが使用するライブラリのバージョンが削除されている。Google Cloud の 見つからない場合は、ライブラリ名の横にある もっと見る &gt; [新しいタブで開く] をタップします。見つからないライブラリ エラー メッセージが表示されます。更新が必要なライブラリが見つかったら、 次のいずれかの操作を行います。 <ph type="x-smartling-placeholder">
      </ph>
    • 別のバージョンを使用するようにライブラリを更新してください。詳細については、 ライブラリ
    • 削除したライブラリをスクリプトのプロジェクトとコードから削除します。詳しくは、 ライブラリを削除する
  • スクリプトが使用するライブラリのスクリプトに、別のスクリプトが含まれている 作成されたバージョンです。次のいずれかの操作を行います。 <ph type="x-smartling-placeholder">
      </ph>
    • スクリプトが使用するライブラリの編集権限がある場合は、 そのスクリプト内のセカンダリ ライブラリを既存のバージョンに更新します。
    • 別のバージョンを使用するようにライブラリを更新してください。詳細については、 ライブラリ
    • スクリプト プロジェクトとコードからライブラリを削除します。詳しくは、 ライブラリを削除する

拡張サービスで Google Chat API を呼び出す場合の Error 400: invalid_scope

エラー メッセージで Error 400: invalid_scope が表示された場合 Some requested scopes cannot be shown, これは、API スコープで認証スコープを指定していない Apps Script プロジェクトの appsscript.json ファイル。ほとんどの場合 Apps Script は、スクリプトに必要なスコープを自動的に決定します。 Chat 拡張サービスを使用する場合は、手動で 認証スコープをサービス アカウントに対して Apps Script プロジェクトのマニフェスト ファイル。詳しくは、 明示的なスコープの設定

エラーを解決するには、適切な認可スコープを追加します Apps Script プロジェクトの appsscript.json ファイルに、 oauthScopes 配列。たとえば、 spaces.messages.create メソッドに次のコードを追加します。

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

デバッグ

誤りが原因でエラー メッセージが表示されない場合もあります。他にも コードが技術的に正しく実行できるものの、 結果が想定と異なる場合があります。ここでは、このような問題に対応するための戦略を 意図したとおりに実行されていないスクリプトが あります。

ロギング

デバッグの際には、情報をスクリプト プロジェクトとして記録すると役に立つことが多い 実行されます。Google Apps Script では、情報をログに記録する方法が 2 つあります。 Cloud Logging サービス 基本的なロガーとコンソール サービス 組み込まれています。

詳しくは、ロギングガイドをご覧ください。

Error Reporting

ランタイム エラーが原因で発生した例外は自動的に Google Cloud Error Reporting サービスを使用して記録されます。このサービスを使用すると、 スクリプト プロジェクトが作成する例外メッセージの検索とフィルタ。

Error Reporting にアクセスするには、 Google Cloud Platform コンソール

実行数

Apps Script では、スクリプトを実行するたびに実行の記録が作成され、 ログが含まれます。これらのレコードは アクションを定義します。

スクリプトの実行状況を Apps Script プロジェクトの左側にある [Executions] をクリックします。

Apps Script サービスのステータスを確認する

まれだが、Google Workspace に固有のものもある サービス(Gmail やドライブなど) サービスの停止につながる可能性のある一時的な問題が発生します。この これらのサービスとやり取りする Apps Script プロジェクトが機能しなくなる 表示されます。

Google Workspace サービスが利用可能かどうか 確認できます モニタリングして Google Workspace ステータス ダッシュボード: サービスの停止が 解決するまで待つか 詳しくは、 Google Workspace ヘルプセンター または Google Workspace に関して報告されている問題 ご覧ください

デバッガとブレークポイントを使用する

スクリプトの問題を見つけるには、デバッグモードでスクリプトを実行します。実行時 デバッグモードでは、ブレークポイント( 問題があると思われる箇所がハイライト表示されます。スクリプトが 一時停止して表示を停止し、 その時点の各変数の値を取得できるため、 多くのログ ステートメントを追加することなく、スクリプトの内部動作を実行できるようになります。

ブレークポイントを追加する

ブレークポイントを追加するには、 指定することもできます。行番号の左側にある円をクリックします。以下の 上の画像は、スクリプトに追加したブレークポイントの例を示しています。

ブレークポイントを追加する

デバッグモードでスクリプトを実行する

スクリプトをデバッグモードで実行するには、エディタの上部にある [Debug] をクリックします。

ブレークポイントのある行が実行される前に一時停止し、 デバッグ情報の表をご覧ください。このテーブルを使用して オブジェクトに格納されている情報です。

スクリプトの実行方法を制御するには、[Debugger] パネルの上部で 「ステップイン」、「ステップオーバー」、「ステップアウト」を使用するできます。これらを使用すると、 スクリプトを 1 行ずつ作成して、時間の経過に伴う値の変化を調べます。

複数の Google アカウントに関する問題

同時に複数の Google アカウントにログインした場合、 アドオンやウェブアプリにアクセスできません。 マルチログイン 同時に複数の Google アカウントにログインすることはできません。Apps でサポートされていません。 スクリプト、アドオン、ウェブアプリ。

  • 複数のアカウントにログインしている間に Apps Script エディタを開いた場合は、 Google からのメッセージ 使用するアカウントを選択します。

  • ウェブアプリやアドオンを開いたときにマルチログインの問題が発生する場合は、次のいずれかをお試しください。 次の解決策があります。

    • すべての Google アカウントからログアウトし、 アドオンまたはウェブアプリを選択します。
    • Google Chrome でシークレット ウィンドウを開くか、同等のシークレット ブラウジングを開きます そのアドオンまたはウェブアプリがインストールされている Google アカウントにログインします。 指定します。

困ったときは

上記のツールと手法を使用して問題をデバッグすると、 さまざまな問題が発生しますが、場合によっては、 解決に役立ちますサポートページをご覧ください。 どこに質問したりバグの報告をしたりできる場所に関する情報も提供しています。