それぞれに同じ機能を持つ一連のライブラリがあります (各ライブラリはテンプレートに関連付けられており、ユーザーの要求に応じて毎回異なるテンプレートを使用できます)。関数を動的に呼び出すコードを作成しようとしています。関数が同じスクリプト内にある限り、これは問題ありません。ただし、私の関数は異なるライブラリにあり、それらを呼び出そうとするとエラーが発生します: 実行に失敗しました: TypeError: 関数 Script2.returnWord がオブジェクト [オブジェクト オブジェクト] に見つかりません。(25 行目、ファイル「dynamicFunctionsTest」)。
コードは次のとおりです。
function test1() {
return 'raining';
}
function test2() {
return 'cats';
}
function test3() {
return ScriptLibrary1.returnWord(); // the function returns the word 'and'
}
function testing() {
var message;
var func = [];
func [0] = 'test1';
func [1] = 'test2';
func [2] = 'test3';
func [3] = 'ScriptLibrary2.returnWord'; // the function returns the word 'dogs'
Browser.msgBox(func); // check values before calling
for (var i = 0; i < func.length ; ++i) {
message = this[func[i]](); // this line fails on the 4th one
Browser.msgBox(message);
}
}
最初の 3 つが機能しています (3 つ目は、ローカルで呼び出すことができるかどうかを確認するための単なるテストでしたが、これは機能しますが、目的には不十分です)、4 つ目では失敗します。
誰でもそれを機能させる方法を知っていますか?
ありがとう。PS。スクリプトは、Google スプレッドシートから呼び出されます。