GoogleスプレッドシートのApps Scriptでは、エディタ上では正常に実行できているにもかかわらず、デプロイした途端に「スクリプト関数が見つかりません」というエラーが発生することがあります。この現象は、プログラム自体が間違っているとは限らず、デプロイ設定や公開方法、関数の指定ミスが原因で発生するケースが多くあります。
この記事では、Apps Scriptで実行は成功するのにデプロイ後に関数が認識されない場合の原因と、確認すべきポイントを初心者にも分かりやすく解説します。
Apps Scriptで実行できるのにデプロイで関数が見つからない理由
Apps Scriptのエディタ画面から直接実行できる場合、関数そのものは正常に認識されています。しかし、デプロイ後の実行では、公開された設定や呼び出し先の情報をもとに処理が開始されます。
そのため、エディタ上では問題なく動いていても、デプロイ時に指定している関数名が存在しない場合や、古いバージョンが公開されている場合には「スクリプト関数が見つかりません」というエラーになります。
原因1:デプロイ時に指定している関数名が間違っている
最も多い原因は、デプロイ設定で指定している関数名と、実際のコード内にある関数名が一致していないケースです。
例えば、以前は以下のような関数を作成していたとします。
function testFunction() {
Logger.log("実行しました");
}
その後、関数名を変更して以下のようにした場合、古いデプロイ設定ではtestFunctionを探し続けるためエラーになることがあります。
function mainFunction() {
Logger.log("実行しました");
}
この場合は、デプロイ設定を確認して現在存在するmainFunctionを指定する必要があります。
原因2:関数名の入力ミスや大文字小文字の違い
Apps Scriptでは関数名の大文字と小文字が区別されます。そのため、少しでも名前が違うと別の関数として扱われます。
例えば、以下の3つはすべて異なる関数です。
function sendData() {
}
function SendData() {
}
function senddata() {
}
デプロイ画面で手入力すると入力ミスが発生しやすいため、コード内の関数名をコピーして設定することをおすすめします。
原因3:コード変更後にデプロイを更新していない
Apps Scriptでは、コードを保存しただけでは公開済みのデプロイ内容が自動的に変更されない場合があります。
例えば、最初にdoGet関数だけで公開した後、新しく処理用の関数を追加しても、以前のデプロイバージョンには反映されません。
対処する場合は、Apps Scriptの「デプロイ」メニューから「デプロイを管理」を開き、新しいバージョンを作成して更新してください。
原因4:ウェブアプリとして公開する場合はdoGetやdoPostが必要
Apps Scriptをウェブアプリとしてデプロイする場合、URLアクセス時に最初に呼び出される関数が必要になります。
例えば、ブラウザからアクセスして処理を実行する場合はdoGet関数を利用します。
function doGet(e) {
return ContentService.createTextOutput("正常に動作しています");
}
通常の関数を作成しただけでは、ウェブアプリの入口として認識されない場合があります。
デプロイ方法に合わせて、必要な関数形式になっているか確認することが重要です。
原因5:別のApps Scriptプロジェクトをデプロイしている
Googleスプレッドシートには、それぞれ別々のApps Scriptプロジェクトが存在します。
複数のスプレッドシートでスクリプトを作成している場合、編集しているファイルとデプロイしているファイルが違う可能性があります。
Apps Scriptエディタ上部に表示されているプロジェクト名や、紐付いているスプレッドシートを確認してください。
デプロイ前に確認するチェックリスト
同じエラーを防ぐため、デプロイ前には以下の項目を確認すると安全です。
- 実際にコード内に存在する関数名を指定しているか
- 関数名の大文字小文字が一致しているか
- コードを保存しているか
- 最新バージョンでデプロイしているか
- 正しいApps Scriptプロジェクトを公開しているか
- ウェブアプリの場合はdoGetやdoPostが設定されているか
特に関数名を変更した後や、既存コードをコピーして利用した場合はデプロイ設定とのズレが発生しやすくなります。
まとめ
GoogleスプレッドシートのApps Scriptで「スクリプト関数が見つかりません」と表示される場合、コードの実行エラーではなく、デプロイ側の設定が原因であることが多くあります。
まずはデプロイ時に指定している関数名が正しいか、最新コードが公開されているか、対象のプロジェクトが間違っていないかを確認しましょう。
Apps Scriptでは「編集しているコード」と「公開されているデプロイ」が別管理になることを理解すると、今回のようなエラーにも落ち着いて対応できるようになります。


コメント