簡體   English   中英

如何在二維數組中設置值?

[英]How to set values in a bidimensional array?

首先,對不起我的技能; 我的編碼背景為零,我只是想修改一個腳本以滿足我的需要。

setValues在兩行數據表數據范圍內設置值。

當前腳本設置第一行中的值。 我應該如何修改腳本,以便我可以從 2 行中的 4 個值中獲取數據?

當前行為:

當前的

我的首選行為:

去

Function 運行:打印

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;
}

問題

嘗試將 2 x 2 值矩陣設置為 1 x 2 范圍

解決方案

您的值必須與范圍的尺寸相匹配。 工作表是由單元格組成的矩陣:

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

二維 arrays 基本相同,其中外層表示行,內層表示行:

[
  [ "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 操作)。

參考

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM