Это, вероятно, невежественная ошибка с моей стороны, но я пытаюсь присвоить разные значения из разных столбцов массиву, чтобы поместить его в мастер-лист. Я хотел бы, чтобы последний столбец был равен имени листа, откуда пришли данные, чтобы отследить его.
Я чувствую, что я близок, но когда я добираюсь до последнего столбца, который я хочу использовать в качестве имени листа, я получаю следующую ошибку: Не удается преобразовать массив в объект [][]. (строка 19, файл "combineTOmaster")
Это мой код до сих пор. Я знаю, что проблема в том, что другой столбец - это массив [[][]], а последний - массив [][], но я не знаю, как это исправить. Есть идеи?
function getColValues(label,sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var colIndex = getColumnIndex(label, sheetName);
var numRows = ss.getLastRow() -1;
if (colIndex > 0 ) {
var colValues = ss.getRange(2, colIndex, numRows, 1).getValues();
}
else if (colIndex = "orginalsheet") {
var colValues = [];
var array = [];
for (var i = 0; i < numRows-1;i++) {
array[i] = sheetName;
}
colValues = array;
}
else {
var colValues = [];
}
Logger.log(colValues);
return colValues;
}
Спасибо
@tehhoch Да, ошибка новичка с = против ==. Эта страница — отличный ресурс.



Давайте сломаем вашу функцию -
// you're passing column header and sheet name, OK
function getColValues(label, sheetName) {
// getting sheet, OK
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
// getting column index, OK
var colIndex = getColumnIndex(label, sheetName);
// getting number of rows to collect, OK
var numRows = ss.getLastRow() - 1;
// at this point, i assume, variable colIndex is a number, because it should be
// if label column exists, colIndex will be greater than 0, OK
if (colIndex > 0) {
// get values of that column, OK
var colValues = ss.getRange(2, colIndex, numRows, 1).getValues();
// colValues will be like this, at this point-
// [ [value], [value], [value] ... ]
} else if ((colIndex = 'orginalsheet')) {
// NOT OK, = sign assigns 'orginalsheet' to colIndex
// do you wanna assign or compare?
// to compare, use == sign
// besides why are you assigning a string value to colIndex ?
// colIndex should be a number, in my understanding
// now, what do you wanna do here ?
var colValues = [];
var array = [];
for (var i = 0; i < numRows - 1; i++) {
array[i] = sheetName;
}
colValues = array;
// at his point, colValues is -
// [sheetName, sheetName, sheetName...]
// is this correct colValues ?
// i guess not
// i think you're trying to use sheetName as a column value for every row
// if that is the case, do this
var colValues = [];
for (var i = 0; i < numRows; i++) colValues.push([sheetName]);
// now colValues is -
// [ [sheetName], [sheetName], [sheetName].... ]
// which you can insert in a sheet as values of a column
} else {
var colValues = [];
}
Logger.log(colValues);
return colValues;
}
@ra89fi Большое спасибо. Вы ведете меня к ответу. Таким образом, ошибка 1 использовала =, а не ==. Вторая ошибка заключалась в использовании colIndex вместо лейбла. Ошибка номер три заключалась в том, что не использовался толчок. Есть ли хороший ресурс по толчку? Еще раз спасибо!!
Ниже приведен окончательный код, который работал у меня.
function getColValues(label,sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var colIndex = getColumnIndex(label, sheetName);
var numRows = ss.getLastRow() -1;
if (colIndex > 0 ) {
var colValues = ss.getRange(2, colIndex, numRows, 1).getValues();
}
else if (label == "orginalsheet") {
var colValues = [];
for (var i = 0; i < numRows;i++) {
colValues.push([sheetName]);
}
}
else {
var colValues = [];
}
return colValues;
}
Это действительно должно быть
orgin? Вероятно, вы имели в видуorigin, т.е."originalsheet". Затем возникает проблема, связанная с тем, что вы используете=в качестве оператора условной проверки. Вы должны изучить основы языка: developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…