как я могу получить именованные диапазоны в Google Spreadsheets, чтобы быть более надежными /текущими?

Я хотел бы вывести значения из именованного диапазона в расчет. У меня есть эта функция:

function getNamedRange(n){
  SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n);
}

Кажется довольно простым. У меня есть именованный диапазон под названием «budgetItems». Он определенно существует и имеет около 6 значений. Но когда я пытаюсь вывести значения с помощью

var items = getNamedRange("budgetItems"); items.getValues();

он обычно говорит, что элементы имеют значение null. Я получил это, чтобы работать в прошлом, но это кажется действительно flaky. Я подозреваю, что здесь есть возможная последовательность и кеширование.

Я привязал эту функцию (чтобы вывести значения из диапазона) в пункт меню. Когда я запускаю этот пункт меню, для запуска 5 строк js требуется около 15 секунд, а затем сбой. Это подозрительно.

3 голоса | спросил jcollum 17 FebruaryEurope/MoscowbSun, 17 Feb 2013 22:54:11 +0400000000pmSun, 17 Feb 2013 22:54:11 +040013 2013, 22:54:11

1 ответ


5

Этот маленький скрипт будет извлекать именованный диапазон и суммировать:

function namedRange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();

  var nRange = ss.getRangeByName("budgetItems");
  var data = nRange.getValues();

  var sum=0;      
  for(var i=0; i<5; i++) {
    sum += parseInt(data[i]);
  }

  sh.setActiveSelection("B1").setValue(sum);
}

Используя приведенный выше код как формулу в Google Spreadsheet, позволяет значительно сократить код и вызовы API:

function getTest(range){
  var sum=0;
  for(var i=0, len=range.length; i<len; i++) {
    sum += parseInt(range[i]);
  }  
  return sum;
}

Вы можете задать диапазон следующим образом: =getTest(A1:A5) или =getTest(A1:A9)

См. пример файла: getRangeByName (редактируемый)

ответил Jacob Jan Tuinstra 18 FebruaryEurope/MoscowbMon, 18 Feb 2013 11:43:40 +0400000000amMon, 18 Feb 2013 11:43:40 +040013 2013, 11:43:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132