2016-10-01 96 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') 

所以我需要能够使用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() {/* */}

我想达到的目标:使用字符串'getValues'(或另一种有效方法的名称),并等效于调用,例如

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

这是一个服务器端脚本,这里没有“窗口” – Harold

+0

很高兴知道@Harold。有没有服务器端的等价物? – jakub

+1

更广泛的背景是什么?什么是起点?期望的最终结果是什么? –

回答

1

随着括号函数调用能够访问的对象的属性。 如果例如你定义一个对象是这样的:

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

你可以得到xobj.xobj['x']obj['m']会给你方法m,如果你想打电话m你需要添加括号,即obj.m()obj['m']()