任意のセルで使用できる Google スプレッドシートで関数を定義することは可能ですか?
ネイティブ関数を使用できるのと同じ方法で、他のセルを参照する関数を定義して使用できると便利です。たとえば、次のように入力します。=myfunction(C1, C2, C3)
任意のセルで使用できる Google スプレッドシートで関数を定義することは可能ですか?
ネイティブ関数を使用できるのと同じ方法で、他のセルを参照する関数を定義して使用できると便利です。たとえば、次のように入力します。=myfunction(C1, C2, C3)
はい -チュートリアルがあります。スプレッドシートで JavaScript 関数を名前で使用するだけです。[ツール] > [スクリプト エディタ] を使用して定義します。
名前の制限に注意してください。「function x10() {}」などの名前で作成した関数の動作が見つからないことに戸惑いました。長い名前に変更すると修正されました。何が許可されていないかについて文書化された規則があると思われますが、それらがどこにあるかはわかりません。
私は「初心者」です。しかし、「範囲」オブジェクトを介してのみ「セル」にアクセスできるのは私の経験です。範囲は単一のセルとして定義する必要があります。たとえば、「A1:A1」の場合、「A1」のセルにアクセスできます。
RANGE は、「SHEET」に関連付けられたオブジェクトです。SHEET は、「SPREADSHEET」に関連付けられたオブジェクトです。
現在アクティブなシートのセル A1 にアクセスするためのサンプル コードを次に示します。
var cell_A1 = SpreadsheetApp.getActiveSheet().getRange("A1:A1");
ここから、他のパラメーターと同様にオブジェクトを渡すことができます。
myFunction(cell_A1);
受信関数は、「範囲」を扱っていることを「認識」する必要があります。「範囲」オブジェクトに関連付けられた「メソッド」を呼び出すことによってのみ、その値にアクセスできます。
気をつけて!「範囲」は、複数のセルで構成できます。呼び出された関数は、単一のセルで動作していることを確認するためにテストする必要があります。複数のセルの範囲を渡すと、関数が期待どおりに動作しない可能性があります。
範囲オブジェクトの 2 つのメソッド「getNumRows()」と「getNumColumns()」は、範囲オブジェクトの行数と列数を返します。
一般に、1 つのセルの変更またはアクセスに限定されたメソッドを使用し、より大きな範囲セットを操作する場合、関数は左上のセル メンバーに対してのみ実行されます。しかし、注意してください。メソッドは 1 つのセルのみを変更すると想定するかもしれませんが、実際には範囲内のすべてのセルに影響を与える可能性があります。ドキュメントをよく読んでください。
単一セルの範囲を取得する別の方法があります。その命令は次のようになります。
var cell_B2 = SpreadsheetApp.getActiveSheet().getRange(2, 2, 1, 1).
最初の 2 つのパラメーターは、"getRange" 関数にセルの位置 (行、列の形式) を伝えます。次の 2 つのパラメーターは、範囲に関連付ける「行」と「列」の数を定義します。両方を「1」に設定すると、単一のセルにアクセスします。
お役に立てれば。