Фон
ОП пытается вставить указанную дату в ячейку в конце строки.Однако определение диапазона в OP неверно, поскольку он выбирает несколько столбцов (когда требуется только один столбец), а количество строк больше (на 2 (два)), чем требуемое количество.Кроме того, независимо от высоты диапазона OP пытается установить в диапазон одно значение (а не массив).
Проблемы
1)определение столбца даты (столбец L) включало значение для числа столбцов (вероятно, переход от определения диапазона данных ранее).Старый диапазон: getRange(lastrow,12, lastrowN, 12);
.Удалите последний параметр (количество столбцов), и код будет себя вести.
2) Код использовал этот метод setValues(Date)
для заполнения столбца даты (8 строк в данных примера OP).проблема здесь в том, что назначенное значение является единственным значением Date
.не массив.Это было решено путем создания и заполнения временного массива datearray
и использования его для обновления значений в столбце даты.
3) В дополнение к отмеченным проблемам, код OP проблематичен тем, что рядимена переменных были повторно использованы в совершенно разных контекстах (включая «лист» и «аа»), а некоторые переменные были объявлены несколько раз.Это затруднило чтение и отладку кода.Я воспользовался возможностью, чтобы решить как можно больше из них.
function so5473808801() {
// setup spreadsheet and sheets
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetB = ss.getSheetByName("B");
var sheetA = ss.getSheetByName("A");
// define key variables
// date
var daterange = sheetB.getRange("E1");
var datevalue = daterange.getValue();
// rows on SheetA
var Arows = sheetB.getRange("I1"); // = 9
var Alastrow = Arows.getValue();
// rows on sheet B
var Brows = sheetB.getRange("J1"); // = 3
var Blastrow = Brows.getValue();
// define the data range on Sheet A
var Adatarange = sheetA.getRange(2, 1, Alastrow, 11);
// Logger.log("DEBUG: The defined range on Sheet A is "+Adatarange.getA1Notation());//DEBUG
var Adatavals = Adatarange.getValues();
// define a target range on Sheet B and set values from A
var targetrange = sheetB.getRange(Blastrow, 1, Adatavals.length, 11);
// Logger.log("DEBUG: The target on sheetB = "+targetrange.getA1Notation()); // DEBUG
targetrange.setValues(Adatavals);
// set a range to update date on Sheet B
var daterows = (Alastrow - 1); // doesn't take 2 row header on B intoi account
var Bdaterange = sheetB.getRange(Blastrow, 12, daterows);
// Logger.log("DEBUG: The date range on sheet B = "+Bdaterange.getA1Notation());
// create an array to store multiple copies of datevalue
var datearray = [];
//populate the array
for (var i = 0; i < daterows; i++) {
datearray.push([datevalue]);
}
// set the date into Column L
Bdaterange.setValues(datearray);
}