Согласно документации , openById(id)
подпись метода ожидает строку в качестве параметра. Ваша переменная FileID
содержит массив массивов значений, возвращаемых вызовом метода getValues()
(см. docs ), поэтому доступ к элементу из него по индексу [i]
возвращает массив, а не значение .
Условие FileID != "-"
всегда оценивается как true
в вашем скрипте, поскольку вы выполняете строгое сравнение , которое проверяет неравенство в вашем случае. Он возвращает true
, как только возникает несоответствие типов: "object" !== "string"
.
const whatGetValuesReturns = [
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]
];
const whatOpenByIdExpects = "string";
for(var i = 0; i < whatGetValuesReturns.length; i++) {
const whatEachIterationOfLoopGets = whatGetValuesReturns[i];
const typeOfWhatIsExtracted = typeof whatEachIterationOfLoopGets;
console.log(
`Expected ${whatOpenByIdExpects},
got ${typeOfWhatIsExtracted} with values:
${whatEachIterationOfLoopGets.join(" ")}`
);
}
Основываясь на обсуждении, мне нужно пояснить, что, когда вы ограничиваете getRange()
одним столбцом (вне примечания: B:B
будет столбцом ссылка, B2:B10
- это диапазон ячеек) он по-прежнему возвращает экземпляр Range
, который, в свою очередь, имеет определенный метод getValues()
, который всегда возвращает матрицу значений:
const singleColumn = [
[1],
[2],
[3],
[4]
];
for(const row of singleColumn) {
const value = row[0]; //<-- since we have only one, first index is used
console.log(value);
}