来自字符串的链式方法
Chained method from string
在与 Google 电子表格关联的脚本项目中,我想编写一个函数,从一系列单元格中提取数据。有多个extraction methods对应不同的数据类型,即getValues
、getBackgrounds
等
通常的调用方式是:
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.x
或 obj['x']
获得 x
。
obj['m']
会给你方法 m
如果你想调用 m
你需要添加括号即 obj.m()
或 obj['m']()
.
在与 Google 电子表格关联的脚本项目中,我想编写一个函数,从一系列单元格中提取数据。有多个extraction methods对应不同的数据类型,即getValues
、getBackgrounds
等
通常的调用方式是:
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.x
或 obj['x']
获得 x
。
obj['m']
会给你方法 m
如果你想调用 m
你需要添加括号即 obj.m()
或 obj['m']()
.