Передача макроса 2-мерного массива в Google Sheet - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь передать 2-мерный массив (фактический размер 20000 x 50) из макроса в Google Sheet. Я нашел код для этого, но получаю ошибку исключения: Исключение: параметры (число []) не соответствуют сигнатуре метода для SpreadsheetApp.Range.setValues. в строке range.setValues ​​(data1).

function Analyze() {

  var data1 = [10, 2]; // Defining a 10x2 array  

  var spreadsheet = SpreadsheetApp.getActiveSheet();

  data1[1, 1] = "Linda";
  data1[1, 2] = "Blue";

  data1[2, 1] = "Tom";
  data1[2, 2] = "Orange";

  var range = spreadsheet.getRange(1, 1, data1.length, 2);

  range.setValues(data1);

}

Может кто-нибудь разобраться в проблеме. Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020
var data1 = [ 10 , 2 ]; // Defining a one dimensional array with 2 values

Вам необходимо создать двумерный массив ... В JavaScript это в основном массив, вложенный в массив.

var spreadsheet = SpreadsheetApp.getActiveSheet();
var data1 = [];

data1[0] = ["Linda","Blue"];
data1[1] = ["Tom","Orange"];

var range = spreadsheet.getRange(1, 1, 2, 2);
range.setValues(data1);
0 голосов
/ 08 апреля 2020

Я думаю, это то, что вы пытались сделать:

function Analyze() {
  var data1=[['',''],['',''],['',''],['',''],['',''],['',''],['',''],['',''],['',''],['','']];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  data1.forEach(function(r,i){r[0]='Name'+i+'0';r[1]='Name'+i+'1'})
  Logger.log(data1);
  sh.getRange(1,1,10,2).setValues(data1);  
}

Вы также можете сделать это следующим образом:

function Analyze() {
  var data1= [...Array(10)].map(e => Array(2));
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  data1.forEach(function(r,i){r[0]='Name'+i+'0';r[1]='Name'+i+'1'})
  Logger.log(data1);
  sh.getRange(1,1,10,2).setValues(data1);  
}

Изображение:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...