Попытка добавить диапазон данных в указанный ИМЕНОВАННЫЙ лист в ячейке

#google-apps-script #google-sheets

Вопрос:

Как описано в названии, однако, похоже, вы столкнулись с какой-то неизвестной ошибкой. Я что, просто схожу здесь с ума? Или это связано с тем, что значения GET являются 2D-массивом.

 function AppendCopy() {
var ss=SpreadsheetApp.getActive();  
var sh1=ss.getSheetByName('Calculation');
var ref = ss.getSheetByName("Dashboard").getRange("B2").getValue();
var sh2=ss.getSheetByName(ref);
var A=sh1.getRange('A2:C').getValues();
sh2.appendRow([new Date(),A]);
}
 

Комментарии:

1. Можете ли вы поделиться точным выводом консоли, когда вы столкнулись с ошибкой? Также, может быть, включите несколько строк о том, что вы пытаетесь сделать?

Ответ №1:

A-это двумерный массив, поэтому я не уверен, чего вы пытаетесь достичь. Также, когда вы используете диапазоны, как A2:C в скрипте, вы получаете нули между lastrow и maxrow, которые обычно должны быть удалены методом фильтра.

Попробуйте вот так:

 function AppendCopy() {
  var ss = SpreadsheetApp.getActive();
  var sh1 = ss.getSheetByName('Calculation');
  var ref = ss.getSheetByName("Dashboard").getRange("B2").getValue();
  var sh2 = ss.getSheetByName(ref);
  var A = sh1.getRange(2,1,sh1.getLastRow()-1,3).getValues().flat().join(', ');
  sh2.appendRow([new Date(), A]);
}
 

Я превратил A в строку, потому что неясно, что вы пытаетесь сделать. appendRow() должен просто добавить одну строку.

После дополнительного рассмотрения, возможно, это то, что вы хотели сделать:

 function AppendCopy() {
  var ss = SpreadsheetApp.getActive();
  var sh1 = ss.getSheetByName('Sheet1');
  var ref = ss.getSheetByName("Sheet2").getRange("B2").getValue();
  var sh2 = ss.getSheetByName(ref);
  var A = sh1.getRange(2, 1, sh1.getLastRow() - 1, 3).getValues().map(r => { r.unshift(new Date()); return r; });
  if (sh2.getLastRow() > 1) {
    sh2.getRange(sh2.getLastRow()   1, 1, A.length, A[0].length).setValues(A);
  } else {
    sh2.getRange(1, 1, A.length, A[0].length).setValues(A);
  }
}
 

Это последнее решение добавит диапазон данных в нижнюю часть sh2 с датой, вставленной в первый столбец каждой строки.