特定の行にあるid群を元にデータを取得して合計値を返す関数を作った。
Google Apps Scriptはよくわかってないので動けばいいやで手探りで書いてるんだけど、
最初は、以下のような形で引数を指定するようにしていた。

=getHogeHoge(ROW(), "B", "AH")

これを、行の一番右に入れると、その行の内容をとってきて計算結果を返してくれるんだけど、行の内容をいじくっても、内容が全然追従してくれない。
画面をリロードしても結果が変わってくれない。スクリプトエディタでコードを変更するとようやく反映される。
毎回意味もなくコードを変更して、合計値を更新するのは面倒なので、リファレンスをみたり、いろいろがんばった所、セルの範囲だとわかるような引数を指定しないと、計算対象が変化した事を補足できず、動的に再計算できないらしい。
そこで、引数の受け渡し部分を以下のように書きなおした。

=getHogeHoge(B7:AH7) 

B7:AH7みたいな引数を入れると、二次元配列で指定内容の中身が帰ってくる。rangeでgetValues()した時みたいなやつ。最初の引数指定のやつは、受け取ったアドレスを元にわざわざgetRangeしてたので、値がそのままくるという意味でも便利。
こういう書き方にすると、オートフィルも効いて入力しやすいので、Google Apps Scriptを書いている皆様は私のように動けばなんでもいいやで書かずにコンピュータさんにとってこっちが何やってるか想像付きやすい書き方を意識されるとよろしいのではないでしょうか。

One thought on “Google SpreadSheet上での関数は引数によって実行タイミングが変わる

  1. @doima_ より:

    Google SpreadSheet上での関数は引数によって実行タイミングが変わる https://t.co/IahvfB1SrG @haltさんから

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ねこ認証:9つのパネルの中からねこを3匹選んでください