2016-10-01 4 views
0

Googleスプレッドシートに関連付けられたスクリプトプロジェクトで、ある範囲のセルからデータを抽出する関数を記述したいと思います。複数ありextraction methods、異なるデータ型に対応する、すなわちgetValuesgetBackgroundsなど文字列からの連鎖メソッド

これらの呼び出しの通常の方法は次のようになります。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mysheet') 
var A1 = 'A1:A2' 
var values = sheet.getRange(A1).getValues() 

しかし、この関数の内部で起こる、と私は聞かせたいです

var r = myfunction(arg1, arg2, extractionMethod = 'getValues') 

だから私は、メソッドを呼び出すために(それが含まれている文字列IE)extractionMethodを使用できるようにする必要があります。そうは次のようにユーザーが関数呼び出しで抽出する方法を決定します。

私が試した:

var values = sheet.getRange(A1).window[extractionMethod] 

TypeError: Cannot read property "getValues" from undefined. (line 31, file "fun")

を私も

var values = sheet.getRange(A1)[extractionMethod] 

しかし、その後Logger.log(values)を試しただけで、私が達成したい何

[16-10-01 04:09:15:014 PDT] function getBackgrounds() {/* */}

を与える:ブラケット付きの例

var values = sheet.getRange(A1).getValues() 
+0

これはサーバーサイドのスクリプトです。ここには「ウィンドウ」はありません。 – Harold

+0

お手数ですが、@Harold。サーバー側に相当するのはありますか? – jakub

+1

より広いコンテキストとは何ですか?出発点は何ですか?希望の最終結果は何ですか? –

答えて

1

のために、文字列'getValues'(または別の有効なメソッド名)を使用して呼び出すことと同等である関数呼び出しは、あなたは、オブジェクトのプロパティにアクセスすることができます。 あなたはこのようにオブジェクトを定義します。

var obj = { 
    x: 1, 
    m: function() { 
    return this.x * 2; 
    } 
}; 

あなたがobj.xまたはobj['x']xを得ることができます。 obj['m']はメソッドmを、mに電話する場合は、かっこを追加する必要があります。つまり、obj.m()またはobj['m']()です。

関連する問題