Google Spreadsheet/Google Apps Script

注意

グローバルに値を保持できない

トップレベルで var 宣言して値を保持することができない。 GAS はサーバ側で実行されるものであってブラウザ側ではない。 つまり、同じ画面を開いていても1回目と2回目の実行になんの関係も無い。

これは当たり前といえば当たり前でスクリプトがサーバサイドで動作することを考えるとこういう変数があるといつ破棄されるかわからない領域にいつまでもゴミが残って資産を食い潰すからだろう。

これは、実行にまたがる話で、1度の実行内ならばグローバルに値は保持できる。

実行を跨いで保持したいならシートに書き込んでおけばよいだろう

API 呼び出しが遅い

必ずしもそうでは無いのだが、API 呼び出し、つまり、JS 上の数値操作ではなくシートやセルなどのスプレッドシート上の資産を操作するメソッドが遅い傾向がある。 なので API 呼び出しの操作は最小限にして、JS 上での操作をメインに進めたほうがよい。

msgBox に改行を含むテキストを表示する

  Browser.msgBox("hello\\nworld\\n");

こういう改行はよく \n が使われるが、GAS では \\n という感じにバックスラッシュを2つに使う。

選択範囲に関するメモ

選択範囲を取得する

var range = s.getActiveRange();

この選択範囲に関することで、Ctrl 等を使って飛び地に複数選択した場合は、最後に選択したのみとなるようだ。

この値は選択範囲の最初のセルのある行となる。下から上にドラッグして選択した場合でも若い方の番号のセルの値になる。

range.getRow();

この Range という概念は、あくまで Range というだけで、 Range は Range の集合体にはなっていないようだ。 なので、Range の一部を Range として取得するような口は用意されていないようだ。

google/gdrive/google_spreadsheet/google_apps_script/start.txt · 最終更新: 2018-11-16 11:57 by ore