web-dev-qa-db-ja.com

すべてのカスタム関数は、1つのスプレッドシートで「不明な関数」を返しますが、他のスプレッドシートでは機能します

いつも使っているシンプルなカスタム関数がいくつかあります。最近、どうしても使用する必要のあるスプレッドシートに遭遇しましたが、最も基本的なカスタム関数を使用しようとすると、「#NAME?」が表示されます。 「不明な機能」のホバーテキスト付き。

他のすべてのコードを削除して、この単純な関数だけを試しても、機能しないようです。

function double(d) {
  return 2*d;
}

スプレッドシートを複製すると、それに付属するコード[〜#〜]は[〜#〜]機能します。

いくつかの注意:

  1. これは、Google Apps forEnterpriseアカウントです。

  2. 私はもともとこのスプレッドシートの所有者ではありませんでしたが、これが原因かもしれないと考えて所有者になりました。

  3. スプレッドシートには元々保護された領域がありましたが、これが原因である可能性があると考えて削除されました。

このスプレッドシートは何百人もの人々と共有されているので、根本的な原因を見つけて修正したいと思います。

何かご意見は?

10
Bob Wold

OPには遅すぎますが、これが他の誰かに役立つ場合:スプレッドシートが、数か月間機能していたカスタム関数の認識を突然停止するという同様の問題が発生しました。最近コードの変更は行われておらず、スプレッドシートは最後に機能してから編集されていません。 Tools > Script editorに行ったとき、カスタム関数を含むコードが表示されていました。

ページを再読み込みして閉じてから再度開くと、修正されませんでした。いくつかの適切な引数を使用してカスタム関数を呼び出すために、単純なパラメーターなしのラッパー関数を追加しました。

次に、元のカスタム関数にブレークポイントを設定して、このラッパー関数をデバッガーで実行しました。これに当たったとき、私はスプレッドシートに戻り、カスタム関数を魔法のように再び見ることができました。

2
HexAndBugs

シートにカスタム関数がある場合、それらはそのシートに対してBOUNDです。したがって、sheet自体を複製すると機能しますが、自動的にグローバルまたはドメイン全体のカスタム関数になるわけではありません。

他の方法で使用する唯一の方法は、実際にアドオンとして公開せずに、ツールメニューに移動し、スクリプトエディターをクリックして、使用するシートにバインドされたスクリプトからコードを実際にコピーして、使用するシートのスクリプトエディタ。

1

すでにアドオンとして公開している場合は、次の手順で、コピーしたシートのアドオンを再度アクティブ化する必要があります。

  • メニューアドオン/ YOUR-ADD-ON-NAME /ヘルプ/ストアで表示をクリックします。
  • [管理]をクリックし、ドロップダウンメニューでチェックを外してから、[このドキュメントで使用]をもう一度チェックして、アドオンを現在のシートにロードします。
1
Dryland

繰り返しになりますが、スレッドの後半ですが、これで見つけた唯一のスレッドでした。私の関数も正常に実行されていて、突然不明な関数が返されました。シグニチャが変更されていることがわかりました。最初は、送信するパラメータがいくつかあり、エラーを返すセルにはまだ関数呼び出しのパラメータがありました。関数は長い間パラメータを使用していませんでした。パラメータとVoilaを削除しました!どうやら、それが呼び出しパターンを実施し始めたところに何かが変わった...

1
George