小编dbr*_*dbr的帖子

向电子表格添加多行 - Google Apps脚本

我希望通过GAS将多行附加到谷歌表,同时考虑到性能和不希望的可能性.

为了实现这一目标,我将使用appendRow这个解决干预突变的问题,并在单个函数中完成所有操作.

简单示例:

var sheet= SpreadsheetApp.openById(ssId).getSheetByName(sheetName);
sheet.appendRow(["foo", "bar", "foobar"]);
Run Code Online (Sandbox Code Playgroud)

当然要将其扩展到多行,我可以简单地为每一行循环遍历此函数,尽管GAS最佳实践建议不要使用这些实践.

尝试使用appendRow通过2D阵列添加多行是不成功的,并且使用对辅助数组的引用作为进入行的值导致API.

因此,我想问,有没有办法将多行附加到电子表格中,该电子表格仍然可以处理干预的可变性,appendRow并尽可能避免循环?

google-apps-script google-spreadsheet-api

9
推荐指数
3
解决办法
9539
查看次数

在继续 Google Apps 脚本之前等待异步请求返回

我目前正在生成的 Google Apps 脚本中的某些代码需要一个对象来完成,其中一个属性由异步请求的结果设置。这个对象,特别是这个属性,稍后会被用到。但是,由于在需要该属性的函数运行时请求尚未返回,因此它们没有正确评估。我的代码如下:

function Thing(val) {
    var self = this

    var createSuccess = function(data) {
        self.foo = data;
    }

    var init = function(val) {
        google.script.run.withSuccessHandler(createSuccess).serverFunc(val);
    };

    init(val);
}

function objStuff() {
    var foobar = new Thing('bar');
    // Do stuff with foobar.foo
}

objStuff();
Run Code Online (Sandbox Code Playgroud)

目前使用 foobar.foo 的东西不能正常工作,因为脚本在继续之前没有等待脚本的返回值。

在继续执行脚本的其余部分之前,有没有一种方法可以等待 foo 属性通过异步请求进行评估?

javascript asynchronous google-apps-script

7
推荐指数
1
解决办法
3249
查看次数

确定 Proxy 对象中的 get handler 是否正在处理函数调用

我当前有一个 Proxy 对象,如果未定义属性,我想捕获对该属性的调用。我的代码的基本版本是这样的。

var a = new Proxy({}, {
    get: function(target, name, receiver) {
        if (target in name) {
            return target[name];
        } else {    
            function a() {
                return arguments;
            }
            var args = a();
            return [target, name, receiver, args];
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

对此处(即:a.b; a.c()等)的属性调用应返回属性调用的目标、名称、接收者和参数。

然而,我希望解决的问题需要我知道属性调用是针对属性还是函数,以便我可以对每个属性进行不同的处理。检查参数对象的长度不起作用,因为调用a.c()会产生 0 的长度,就像 一样a.b,因此它将被视为普通属性而不是方法。

因此,有没有办法确定尝试访问的属性是否被作为函数调用。

更新:我应该澄清,如果访问的属性/方法未定义且存在,则此方法需要工作。

javascript

5
推荐指数
1
解决办法
3264
查看次数

我应该在JavaScript中嵌套构造函数和原型吗?

我正在处理的一个项目目前已经调用了一个对象类型Chain,它本身只生成一种Link只使用它的对象.在之前的项目中,我已经嵌套了构造函数Link内部的对象构造函数和原型Chain,但是,我开始怀疑这次是否是最好的方法,因为我实际上似乎是Chain用它自己的定义设置每个的Link每一次.

为清楚起见,这是我原来的代码:

var Chain = function() {
    var self = this;

    var Link = function(key) {
        this.prop = key;
    };
    Link.prototype.attach = function(args) {
        for (let value of args) {
            this[value.prop] = value.value;
        }
    };

    self.links = [];

}
Chain.prototype.add = function(key) {
    this.links.push(new Link(key));
}
Run Code Online (Sandbox Code Playgroud)

然后我开始想知道我是否应该将Link构造函数和原型存储在野外(就像我一样)Chain(对于记录,它不是在野外,它实际上包含在一个对象中)或者我是否应该使用原型Chain定义Link并保持它.

在这种情况下,我没有找到关于最佳实践的大量信息,虽然我强烈怀疑我的第一种做事方式不是最佳/正确的方式; 我不确定我的替代品是否也是.

所以我想问一下,这样做的最佳实践/最有效/最明智的方法是什么?

javascript prototype-chain

3
推荐指数
1
解决办法
105
查看次数