Google Apps Scriptで「スクリプト関数が見つかりません」と表示される原因と解決方法

JavaScript

GoogleスプレッドシートのApps Scriptでは、エディタ上で正常に実行できているにもかかわらず、デプロイ後に「スクリプト関数が見つかりません」というエラーが表示されることがあります。このエラーは、コード自体の実行エラーではなく、デプロイ時に呼び出す関数の指定や公開設定、関数名の状態などが原因で発生するケースが多くあります。

この記事では、Apps Scriptのデプロイ時に関数が認識されない原因と、確認すべきポイントを順番に解説します。

Apps Scriptで実行できるのにデプロイで関数が見つからない主な原因

Apps Scriptのエディタ画面で実行できる場合、基本的にはコードの文法エラーや関数そのものの問題ではありません。しかし、デプロイでは別の仕組みで関数が呼び出されるため、設定の違いによってエラーが発生します。

特に多い原因は、デプロイ時に指定した関数名が現在のコード内に存在しない、関数名を変更した後に古いデプロイ設定を利用している、または実行対象として適切ではない関数を選択しているケースです。

原因1:デプロイ設定で指定している関数名を確認する

Apps ScriptのウェブアプリやAPIとしてデプロイする場合、実行する関数が正しく指定されている必要があります。

例えば、以前「myFunction」という関数を作成してデプロイした後、コードを以下のように変更した場合があります。

function myFunction() {
  Logger.log("テスト");
}

この関数名を「mainFunction」などに変更した場合、デプロイ設定が古いままだと、存在しないmyFunctionを探してエラーになることがあります。

対処方法として、Apps Scriptエディタの「デプロイ」から現在の設定を確認し、実際に存在する関数名を指定してください。

原因2:関数名のスペルミスや大文字小文字の違いを確認する

Apps Scriptでは関数名の大文字と小文字が区別されます。そのため、見た目が似ていても別の関数として扱われます。

例えば、以下の場合は別の名前として認識されます。

function sendMail() {
}

function SendMail() {
}

デプロイ時にsendmailやSendmailなど別の名前を指定している場合、「スクリプト関数が見つかりません」というエラーにつながります。

関数名をコピーしてデプロイ設定に貼り付けることで、入力ミスを防ぐことができます。

原因3:デプロイを更新せず古いバージョンを実行している

Apps Scriptでは、コードを書き換えただけでは公開済みのデプロイ内容が自動的に更新されない場合があります。

例えば、最初にfunction test()を作成して公開した後、新しくfunction doPost()を追加しても、既存のデプロイが古い状態のままだと追加した関数が認識されないことがあります。

この場合は「デプロイ」から「デプロイを管理」を開き、新しいバージョンを作成して更新してください。

原因4:ウェブアプリ用の関数形式になっているか確認する

Apps Scriptをウェブアプリとして公開する場合、特定の入口関数が必要になります。

例えば、URLアクセスで処理を実行する場合はdoGetやdoPostを利用します。

function doGet(e) {
  return ContentService.createTextOutput("Hello");
}

通常の処理用関数だけを作成していて、それを直接URLから呼び出そうとしても正常に動作しない場合があります。

どの方法でデプロイするかによって必要な関数形式が異なるため、用途に合わせた関数を用意することが重要です。

原因5:Apps Scriptプロジェクトを間違えていないか確認する

Googleスプレッドシートには、それぞれ個別のApps Scriptプロジェクトが紐付いています。

複数のスプレッドシートやApps Scriptファイルを操作している場合、別のプロジェクトを編集しているケースがあります。

現在デプロイしようとしているスクリプトが、対象のスプレッドシートに紐付いたプロジェクトか確認してください。

エラーを防ぐためのApps Scriptデプロイ手順

デプロイ前には以下の手順で確認すると、関数認識エラーを防ぎやすくなります。

  • コード内に公開したい関数が存在するか確認する
  • 関数名のスペルや大文字小文字を確認する
  • 保存ボタンを押して最新状態にする
  • 新しいバージョンを作成してデプロイする
  • デプロイ後のURLや実行設定を確認する

特に関数名を変更した直後は、古いデプロイ設定が残っていることが多いため注意が必要です。

まとめ

GoogleスプレッドシートのApps Scriptで「スクリプト関数が見つかりません」と表示される場合、コードの実行可否よりもデプロイ設定側に原因があることが多くあります。

まずはデプロイ時に指定している関数名が正しいか、関数名の変更後にデプロイを更新しているか、対象のApps Scriptプロジェクトが正しいかを確認しましょう。

Apps Scriptは保存したコードと公開中のデプロイが別管理になっているため、この仕組みを理解すると同じエラーが発生した場合でも迅速に原因を特定できるようになります。

コメント

タイトルとURLをコピーしました