【问题标题】:Googlesheets Script ArraysGoogle 表格脚本数组
【发布时间】:2021-04-27 20:52:46
【问题描述】:

我对在 Google 表格中编写脚本非常陌生。

我正在开发一种工具,它可以读取大量数据,然后将其输出。 所以我的计划是将数据读入一个数组。 创建一个数组 然后将数组输出到工作表。 (我让它在逐个单元读取和写入的地方工作,但速度非常慢)

我现在只是在做一些测试,我真的很挣扎,我一直在谷歌搜索和阅读这里的其他问题,但我的问题似乎太简单了,我找不到答案正在寻找。

这是我迄今为止编写的一小段代码。我基本上是在尝试将一些具有 9 行和 4 列的数据放入一个数组中,然后查询该数组并弄清楚如何设置值(我宁愿设置整个数组的值,而不仅仅是一个数据位,但我什至无法让单个数据工作)

var mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Test Data') 
var myArray = mySheet.getRange(1,1,9,4).getValues()
mySheet.getRange(2,10).setValue(myArray.length)
mySheet.getRange(3,10).setValue(myArray.height)
mySheet.getRange(4,10).setValues(myArray[1],[1])

我的问题是: 我实际上是在创建一个二维数组吗?

这个截图是我运行代码时得到的

为什么长度返回 18 而高度什么也不返回? 如果我启用代码的 setValues 位,我会收到此错误

异常:参数 (String,number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配。

【问题讨论】:

    标签: arrays google-apps-script google-sheets


    【解决方案1】:
    var myArray = mySheet.getRange(1,1,9,4).getValues();
    

    这样你就得到了 9 个数组。每个子数组包含 4 个值。

    所以myArray.length9

    myArray[0].length4

    您可以这样寻址数组的单元格:

    var cel_A1 = myArray[0][0]; // "Project / Retainer"
    var cel_B1 = myArray[0][1]; // "Employee"
    var cel_D9 = myArray[8][3]; // "40.00%"
    


    至于缓慢。有个窍门。您应该一次为尽可能多的单元格设置值。它要快得多。一个细胞或数百个细胞大约需要相同的时间。首先,您创建一个具有正确值和大小的二维数组,然后使用myRange.setValues(myArray) 设置所有范围(它应该具有完全相同的大小)。

    【讨论】:

    • 谢谢尤里,在阅读了您的答案并玩了一下之后。我已经设法让它工作了。
    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2016-01-27
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2022-10-18
    相关资源
    最近更新 更多