来自字符串的链式方法

Chained method from string

在与 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()

使用方括号,您可以访问对象的属性。 如果例如你这样定义一个对象:

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

您可以通过 obj.xobj['x'] 获得 xobj['m'] 会给你方法 m 如果你想调用 m 你需要添加括号即 obj.m()obj['m']().