2014年5月11日日曜日

Google Apps Sctipt で自前の関数をつくる

使えないSEです。


Google Apps Script で簡易的な在庫・販売管理ツールをつくっていたところ、自前でつくった関数ではまってしまってかなり時間を費やしました…
結局解決したのですが…Googleさん Google Apps Script のログ機能の強化をお願いしますm(__)m

自前の関数の作り方については、Custom Functions in Spreadsheets として詳しくGoogleさんがしっかり書いてあったので、参考にしながら書いていたのですが…。

ま、↓のようにスプレットシートで独自関数を呼び出すようにして、

Google Apps Script側で独自関数をつくりまして、


function excal(a){

  Logger.log("excal function");

  Logger.log("original function:"+a);

}

実行した結果、この様な感じになってしまうのですよ。
それも、なんどやっても結果がかわらず、”undefined”になってしまうのです。















なぜそうなるのか?わからず、いろいろ試行錯誤していたのですが、基本に帰り、Googleさんが丁寧に教えてくれるサンプルをコピペでやると、問題なく動いていてスプレッドシートに戻り値を返している。
で、しばらく考えて気付いたのが、
どうやら、Google Apps Script側のログに”Undefined”と表示されるが、実際はしっかり動作しているということ。
先程のコードに”return a;”してあげるとしっかりスプレッドシート側に”B1”の値である”30”が表示されました。ちなみスクリプトエディタのログは相変わらず。
※”return a;”が抜けていたんかい!というおちではなく、ログに関数のパラメータである”a”の値が表示されないんだということです。

function excal(a){

  Logger.log("ex_cal function");

  Logger.log("original function:"+a);

  return a;

}

ま、そういう仕様なんでしょうから仕方ないんだろうけど。
独自関数の際にもログが使えると、プログラムも書けないだめなSEが嬉しいです。