デバッガーはおそらくあなたに嘘をついていません-デバッガーでその関数を起動すると、パラメーターが渡されません。ただし、デバッグに使用する値を確実に取得する必要があるだけです。GAS でトリガー機能をテストするにはどうすればよいですか? をご覧ください。、カスタム関数に適用できる手法を示します。
関数に渡すイベントを定義する代わりに、パラメーターの値を提供 (またはスプレッドシートから取得) する必要があります。
function test_drivingDistance() {
// Define a set of test values
var testSet = [[ 'Washington, DC', 'Seattle, WA' ],
[ 'Ottawa, ON', 'Orlando, FL'],
[ 'Paris, France', 'Dakar, Senegal']];
// Run multiple tests
for (var test in testSet) {
Logger.log('Test ' + test + ' = ' + drivingDistance(testSet[test][0],testSet[test][1]));
}
// Get parameters from sheet
var TestFromSheet = drivingDistance(ss.getRange('A1').getValue(),ss.getRange('A2').getValue());
}
あなたはアイデアを得る。関数内にブレークポイントを設定したり、debugger
実行を一時停止したりすることができます。
編集 - 引数の調査
カスタム関数がスプレッドシートから呼び出されたときに受け取る引数は何ですか?
これをデバッグするためにできることは限られています。これは、デバッガーを使用してスプレッドシートから呼び出されたカスタム関数を調べることができず、カスタム関数のセキュリティ制限によりログがブロックされるためです。一般的な引数の受け渡しについて理解するだけで十分かもしれません。JavaScript 関数には名前付きパラメーターがある場合がありますが、すべての引数は、 と呼ばれる配列のようなオブジェクトとして渡されますarguments
。このカスタム関数は、受け取った引数を報告する配列を返します。スプレッドシートから呼び出された場合、各引数は、関数を入力したセルから始まる独自のセルに表示されます。
function testArguments( ) {
var argArray = [];
for (var arg in arguments) {
argArray.push("arguments[" + arg + "] = " + JSON.stringify(arguments[arg]))
}
return argArray;
}
JavaScript には、実際には int や float のような型はなく、数値だけです。これらのパラメータは引用符なしで表示され、数字のように見えます。日付は Date オブジェクトとして到着しますが、この方法で印刷すると Date-y 文字列として表示されます。文字列には引用符があります。
カスタム関数が範囲を引数として受け取ることはありません。スプレッドシートで範囲パラメーターを指定すると、その内容が 1 次元または 2 次元の配列に収集され、その配列が引数になります。