如何在二维数组中设置值?

时间:2020-06-02 19:50:36

标签: javascript google-apps-script multidimensional-array google-sheets

首先,对我的技能感到抱歉;我的编码背景为零,我只是试图修改脚本以适合我的需求。

我需要在两行数据表的数据范围内setValues

当前脚本在第一行中设置值。 我应该如何修改脚本,以便可以从2行中的4个值中获取数据?

当前行为:

current

我的首选行为:

go-to

要运行的功能:打印

function Print() {

   SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet").getRange(1, 1, 1, 2).setValues(Data());    

}

function Data() {

    var array = [];

                      var score = "retrieved score";
                      var time = (2+2);
                      var device = "device";
                      var speed = 3+3;

    array.push([score,time]);

    Utilities.sleep(1000);

    return array;
}

1 个答案:

答案 0 :(得分:2)

问题

尝试将2 x 2值矩阵设置为1 x 2范围

解决方案

您的值必须匹配范围的尺寸。该工作表是一个由单元格组成的矩阵:

|       |       col 1       | col 2 |
| ----- | ----------------- | ----- |
| row 1 | "retrieved score" |   4   |
| row 2 | "device"          |   6   |

二维数组基本相同,其中外层表示行,内层表示列:

[
  [ "retrieved score", 4 ],
  [ "device", 6 ]
]

因此,只需进行简单的修改,即可正确填充单元格:

function Print() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  const rng = ss.getSheetByName("sheet").getRange(1, 1, 2, 2);

  const values = Data();

  rng.setValues(values);    

}

function Data() {

  var array = [];

  var score = "retrieved score";
  var time = 2+2;
  var device = "device";
  var speed = 3+3;

  array.push([score, time], [device, speed]);

  Utilities.sleep(1000);

  return array;
}

注释

  1. 对于我来说,您不需要在此处使用sleep()实用程序方法。内存阵列中的操作是同步的和原子的(对于setValues而言,这是不正确的,因为它是I / O操作)。

参考

    MDN上的
  1. push()方法reference
  2. setValues()方法reference