Как мне извлечь номер столбца с именем диапазона в таблице Google с помощью скрипта Google?

Мне нужно ввести данные в ячейку таблицы Google, которая находится в именованном диапазоне. Чтобы сделать это с помощью скрипта Google, мне нужно знать номер столбца именованного диапазона. Я написал сценарий, который выполняет свою работу, но только потому, что я знаю, что именованный диапазон имеет только один столбец, поэтому я использую команду getLastColumn для получения номера столбца. Я знаю, что должна быть команда "getColumnNumber" или что-то в этом роде, но из документации Google и этого сайта я просто не могу ее найти. Любая помощь? Связанный скрипт ниже:

function addSong() {
    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getActiveSheet();
    var lastRow = sheet.getLastRow()
    sheet.appendRow([lastRow+1]);
    SpreadsheetApp.flush();
    var range = sheet.getRange(sheet.getLastRow(), 1);
    var songTitle = Browser.inputBox('New Song', 'Enter the song title', Browser.Buttons.OK_CANCEL);
    var namedRange = sheet.getRange("Title");
    var col = namedRange.getLastColumn();
    sheet.getRange([lastRow+1], col).setValue(songTitle)
    SpreadsheetApp.setActiveRange(range);
}  

Привет, Купер: Я попробовал ваш подход, и он отлично работает, за исключением того, что теряет часть того, что я делал со своим сценарием; в частности, он не увеличивает номер записи песни. Итак, я добавил ключевой бит из того, что вы сделали, чтобы правильно ввести столбец именованного диапазона в свой код, и все работает. Обновленный код:

function addSong() {
    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getActiveSheet();
    var lastRow = sheet.getLastRow()
    sheet.appendRow([lastRow+1]);
    SpreadsheetApp.flush();
    var range = sheet.getRange(sheet.getLastRow(), 1);
    var songTitle = Browser.inputBox('New Song', 'Enter the song title', Browser.Buttons.OK_CANCEL);
    var namedRange = sheet.getRange("Title");
    var range=sheet.getRange(sheet.getLastRow(), namedRange.getColumn())
    range.setValue(songTitle);
    SpreadsheetApp.setActiveRange(range);
    }

person Bee Tee    schedule 16.02.2019    source источник


Ответы (1)


Попробуй это:

function addSong() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var resp=SpreadsheetApp.getUi().prompt('New Song', 'Enter the sone title', SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
  var songTitle=resp.getResponseText();
  var namedRange = ss.getRangeByName('Title');
  var range=sh.getRange(sh.getLastRow()+1, namedRange.getColumn())
  range.setValue(songTitle);
  SpreadsheetApp.setActiveRange(range);
}  
person Cooper    schedule 16.02.2019