残念ながら、「シート名の変更」をきっかけにカスタム関数を実行することはできません。
コンテナバインドスクリプト(個別のスプレッドシートに紐付いたスクリプト)に記述した関数をスプレッドシートで利用する「カスタム関数」は、関数の引数に記述されたパラメーターの値が変更されたときにだけ再実行されるように作られています。それまでは、以前の値をキャッシュして使用します。
たとえば、どこかのセルに=myFunction(A1)
みたいな式が設定されていると、このセルのカスタム関数myFunction
が実行されて計算結果が更新されるのは、A1セルの値が変化したときだけなのです。
それなら、「GASを使わずにシート名を得てカスタム関数で参照すればいい」と考えるところですが、これも現状では無理ですね。
たとえば、Excelのように=CELL("filename", A1)
として(ファイルパスとともに)シート名を得ることはできません。GoogleスプレッドシートのCELL関数の第1引数に指定できるのは、ADDRESS
, COL
, CONTENTS
, PREFIX
, ROW
, TYPE
, WIDTH
に限定されています。
いっそのこと、「シート名の変更に関係なく変化する値をカスタム関数で参照すればいい」と考え、NOW
やRANDOM
をカスタム関数の引数に直接指定したり、それらを使ったセルを参照したりしても、結果は#ERROR!
となって、「この関数は、NOW()、RAND()、RANDBETWEEN() を含むセルは参照できません」と表示されます。
というわけで、次善の解決策としては、「値が変更されるセルをカスタム関数で参照する」です。たとえば、A1セルでもどこでもいいので、セルに設定する数式中のカスタム関数の引数に指定し(カスタム関数の側ではそれを使用する必要はありません)、そのセルを手動で書き替えると、カスタム関数を使っているセルがいっせいに再計算されます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/13 10:31