如何在类范围内创建自定义函数

时间:2013-01-20 11:43:21

标签: google-apps-script

我想创建一个自定义函数,即 myrange.ckeck_if_included(行,列,numRow行,numcol) 返回一个布尔值,如果输入中给出的范围包含在myrange中,则表示我。是否可以在类范围内创建此功能?以及如何将我的函数引用到myrange? 谢谢 弗兰科

2 个答案:

答案 0 :(得分:2)

您始终可以使用代理对象来执行此操作。这是一个通用的代理制作工具:

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 = ...

答案 1 :(得分:0)

所以你想扩展Google服务的对象/类?这不起作用,如果您尝试这样做,则会出现异常“对象不允许添加或更改属性”:

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