Не удается найти метод getRange (число, number)?

#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)