セルの内容を他のセルにコピーする GAS スプレッドシート カスタム関数を作成しようとしています。そして、ターゲット セルにソース セルのデータだけでなく、数式の内容 (存在する場合) を入力する必要があります。
カスタム関数はセル計算の結果を常に受け取りますが、セルの数式自体は受け取りません。また、ターゲット セルの数式を返すこともできないためです。
一方、セルの数式を読み書きする機能があります。たとえばRange.getFormula()
、 Range.setFormula()
私の努力を可能にしているようです。私は単にそれらを呼び出す別の方法を見つけなければなりません。更新: 一方、カスタム数式は実際にはを使用して数式を読み取ることができますが、を使用してセルに数式を書き込むgetFormula()
権限は絶対にありません。setFormula()
私の質問は...
セルの数式の内容を読み書きするカスタム関数に相当するものを作成する最も洗練された方法は何でしょうか? スプレッドシートを編集するたびにターゲット セルを更新する onEdit 関数を使用できると思いますが、それはターゲット セル範囲の座標をハード コードする必要があることを意味します。移動されます (たとえば、その上に行が挿入された場合)。
更新: 例
例として、セルの複数の範囲 (各範囲は個別の関数パラメーターとして指定) を読み取ることができ、結合されたセルの範囲を返すカスタム関数があります。
=rangeJoin(A1:B10;D1:E15)
...サイズ 2x10 と 2x15 の 2 つの範囲を読み取り、サイズ 2x25 のターゲット範囲を両方の範囲の後続のセル内容で埋めます。ターゲット範囲は、セルを含むセルから始まりrangeJoin
、右に 2 セル、下に 25 セルに広がります (通常のカスタム関数と同様)。カスタム関数 (または同様のメカニズム) は数式をコピーできる必要があるため、=hyperlink("http://www.google.com";"Google")
「Google」という裸の単語を含むテキスト セルとしてではなく、ハイパーリンクとしてターゲット範囲に表示される必要があります。