2013-01-20 39 views
1

我想创建即 myrange.ckeck_if_included(行,列,numRow行,numcol) 返回一个布尔值,说我的自定义函数。是否有可能在班级范围内创建此功能?以及如何将我的功能引用到myrange? 谢谢 franko如何如果输入给出的范围被纳入myrange创建类范围内的自定义功能

+0

我不完全明白你想要做什么,但我认为这是可能的,尽管以稍微不同的方式。请查看[图书馆](https://developers.google.com/apps-script/guide_libraries),并告诉我们这是否对您有所帮助。 – Jacobvdb

+0

我的意思是我只能创建类似函数ckeck_if_included(row1,col1,numrow1,numcol1,row2,col2,numrow2,numcol2)的函数,我假设它没有放在类中,但是我想创建一个函数I可以适用于一个范围。 – franko

回答

0

所以你想扩展一个对象/类的谷歌服务?这不工作,你会得到一个异常“对象不允许属性添加或更改:”如果你尝试这样的:

r=SpreadsheetApp.openById("...").getSheetByName("Sheet1").getActiveRange(); 
r.myFunction=function() { ... } 
+0

好的,谢谢你的回答。 – franko

1

您可以随时使用代理对象来做到这一点。这里有一个一般的代理制作工具:

function proxy(obj) { 
    var x = {}; 
    Object.keys(obj).map(function(k) { x[k] = 
     function() { return obj[k].apply(obj, [].slice.call(arguments, 0)); }}) 
    return x; 
} 

你的情况,那么你可以做

r=proxy(SpreadsheetApp.openById("...").getSheetByName("Sheet1").getActiveRange()); 
r.myFunction=function() { ... } 

更普遍,你甚至可以用代理代替顶层对象:

GmailApp = proxy(GmailApp); 
GmailApp.myFunction = ... 
+0

谢谢你的回答,我会稍微研究一下。 – franko