Запрос электронной таблицы Google: как мне остановить появление диапазона в результате? - PullRequest
0 голосов
/ 22 ноября 2010

Добрый вечер,

Я пытаюсь использовать некоторые навыки кодирования, чтобы помочь манипулировать электронной таблицей в Google Docs, и считаю, что разработанная мной логика логична, но скрипт просто возвращает результаты в виде «Range».

По сути, скрипт представляет собой вложенный цикл и (должен) принимать значения из шести точек в строке данных (начиная с 11) и вставлять их в длинную вертикаль (столбец 38). Затем он должен перейти на следующий ряд.

Я думаю, что это работает, но результаты просто возвращаются как «Диапазон» и не могут понять, как поместить значения в диапазон, если это то, что это значит.

Я также понимаю, что может быть более эффективно использовать один массив для сбора данных в отдельный массив, но я все еще пытаюсь разобраться с синтаксисом.

Вот мой код:

function Transform() {
  //load spreadsheet data and initialise variables

  var sheet = SpreadsheetApp.getActiveSheet();
  var firstrow = 11;//this is a manual figure
  var d = firstrow;
  var valuerplc = sheet.getRange(firstrow, 38);
  var value =1;

  for(var c=firstrow; c<sheet.getLastRow(); c++){
    for (var e=3; e<33; e=e+6){
      var mon = sheet.getRange(c, e);
      valuerplc = sheet.getRange(d, 38);
      valuerplc.setValue(mon);

    }
    d++;

   }
  }

Может кто-нибудь помочь или, по крайней мере, указать мне правильное направление, пожалуйста?

1 Ответ

0 голосов
/ 17 июля 2013

Вы столкнулись с распространенной проблемой новичка, у которой возникла проблема с разграничением диапазонов и значений.

Диапазон выражает область электронной таблицы с помощью методов, которые предоставляют вам доступ к различным характеристикам объекта.Содержимое или данные, которые вы видите в электронной таблице, доступны с помощью метода .getValue() (для одной ячейки) или .getValues() (для нескольких ячеек).

Изменение:

var mon = sheet.getRange(c, e);

Кому:

var mon = sheet.getRange(c, e).getValue();

... и у вас будут данные, которые находятся в этом диапазоне, в виде строки, числа или даты, в зависимости от того, что там было.

Имена переменных, которые вы выбрали, могут привести к путанице, с этим стоит быть осторожным.Например, посмотрите на valuerplc.Название подразумевает, что это значение, которое можно спутать с .getValue() и .setValue().Но он используется как Range, как в valuerplc.setValue(mon), так что это явно НЕ значение.

function Transform() {
  //load spreadsheet data and initialise variables

  var sheet = SpreadsheetApp.getActiveSheet();
  var firstrow = 11;//this is a manual figure
  var d = firstrow;
  var valuerplc = sheet.getRange(firstrow, 38);
  var value =1;

  for(var c=firstrow; c<sheet.getLastRow(); c++){
    for (var e=3; e<33; e=e+6){
      var mon = sheet.getRange(c, e).getValue();
      valuerplc = sheet.getRange(d, 38);
      valuerplc.setValue(mon);
    }
    d++;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...