Как извлечь номер столбца диапазона именованного диапазона Google с помощью скрипта Google? - PullRequest
0 голосов
/ 16 февраля 2019

Мне нужно ввести данные в ячейку листа Google, которая находится в именованном диапазоне.Чтобы сделать это с помощью Google Script, мне нужно знать номер столбца именованного диапазона.Я написал скрипт, который выполняет работу, но только потому, что я знаю, что в именованном диапазоне есть только один столбец, поэтому я использую команду 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);
    }

1 Ответ

0 голосов
/ 16 февраля 2019

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

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);
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...