1

セルの内容を他のセルにコピーする 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」という裸の単語を含むテキスト セルとしてではなく、ハイパーリンクとしてターゲット範囲に表示される必要があります。

4

1 に答える 1

2

「モグダッド」に同意

すなわち。このカスタム関数は機能します:

function myGrid() {
  return [[1,2],[3,"http://www.google.com"]];
}

ただし、カスタム関数は数式をシートに書き込むことはできません。https://developers.google.com/apps-script/execution_custom_functions#permissionsを参照してください

回避策として、「Mogsdad」が提案するように、時間ベースのトリガーなどの「トリガー」を使用できます。

于 2013-12-03T05:53:36.963 に答える