#google-apps-script
#google-apps-script #google-sheets
Вопрос:
Я не могу установить переменную, возвращающую число в последнюю строку под столбцом K в Google таблицах. Код завершается ошибкой в последней строке, .setValues(exampleText)
где я уже определил exampleText
как переменную.
Я использовал различные методы настройки переменных, включая установку переменной для столбца.
Я получаю следующую ошибку:
«Не удается найти метод getRange(число, number)».
Три верхние строки — это пример, который я пробовал ранее.
Column = 'K'
range = ss.getRange(LastRow, Column)
range.setValue(exampleText)
var ss = SpreadsheetApp.getActiveSpreadsheet()
var column = 11
var lastRow = ss.getLastRow();
ss.getRange(lastRow, column)
.setValues(exampleText)
Комментарии:
1.
getRange(row,column)
синтаксис типа принимает только числа, А НЕ строки.2. Вам необходимо просмотреть подписи методов. Они появляются во всплывающем окне автозаполнения (при написании кода в редакторе) и имеют более подробное объяснение на веб-сайте справочной документации (используйте меню Справка).
3. Я отредактировал свой код, чтобы включить столбец = 11 и заменил k на column, но по-прежнему не работает. Я не понимаю, почему? @TheMaster Я уже проверил документацию перед публикацией, но не знаю, как поступить.
4. Может быть, вы хотели бы найти последнюю строку с данными для данного столбца («K» в вашем случае). Правильно?
5.
getRange(string)
Доступно только наSpreadsheet
(ss). Итак, вы можете использоватьss.getRange('Sheet1!A1:B4')
.getRange(number,number)
доступен только на sheet.ss.getActiveSheet().getRange(1,4)
Ответ №1:
Проблема:
-
getRange
это метод, который доступен как дляSpreadsheet
класса, так и дляSheet
class. -
Однако, только
getRange(string)
доступно в электронной таблице (ss). Итак, вы можете использоватьss.getRange('Sheet1!A1:B4')
. -
И
getRange(number,number)
доступен только на sheet. Итак, вы можете использоватьss.getActiveSheet().getRange(1,4)
. -
Класс Sheet также принимает другие варианты этого метода, но класс Spreadsheet — нет, который принимает только строку в качестве единственного параметра.
-
Иногда вы также получаете
Исключение: параметры (строка, число,number,number) не соответствуют сигнатуре метода для SpreadsheetApp.Spreadsheet.getRange
Причина, по которой первый параметр является строкой, заключается в том, что движок JavaScript пытается сопоставить сигнатуру фактического вызова функции:
getRange(string)
. Он преобразует первое число в строку, но не знает, что делать с остальными параметрами (числами). Поскольку нет сигнатуры метода, которая соответствовала бы вызову (строка, число, number,number) вSpreadsheet
классе, он выдает ошибку.
Решение:
Используйте надлежащие методы в предполагаемом классе, как описано в официальной документации. Для большинства целей вы должны использовать Sheet
класс.
SpreadsheetApp.getActive().getSheets()[0].getRange(1,1)