来自字符串的链接方法

Chained method from string

本文关键字:链接 方法 字符串      更新时间:2023-09-26

在与Google电子表格相关联的脚本项目中,我想编写一个从一系列单元格中提取数据的函数。针对不同的数据类型有多种提取方法,如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。(第31行,文件"fun")

我也试过

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

但是Logger.log(values)只给出

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

我想实现的:使用字符串'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']()