Невозможно добавить значение в массив в Google Script - PullRequest
0 голосов
/ 21 января 2019

Я хочу добавить слово «Флаг» в столбец «G» или Array [6], где соответствующая строка показывает значение больше 0,5 в столбце «E» или Array [5].Обратите внимание, что массив [6] пуст и только сценарий может добавить значение, если условие выполнено.

Вот моя попытка, но она не добавляет слово «Флаг» в ячейку.Я ценю любую помощь или указатель.Заранее спасибо!

function test() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1'); 
  var rg=sh.getDataRange()
  var vA=rg.getValues();
   var g = [];

  for(var i=1;i<vA.length;i++) {
      g[i] = [vA[i][6]]; 

      if(Number(vA[i][5])>0.5)g[i] = ['Flag']; {
        SpreadsheetApp.getActiveSheet().getRange(2,7,g.length,1).setValues(g);
}}}

Состояния ошибки: невозможно преобразовать массив в объект [].

Ответы [ 2 ]

0 голосов
/ 21 января 2019

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

Обратите внимание, это перезапишет любые формулы.

function test() {

  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet1'); 
  var rg = sh.getDataRange();
  var vA = rg.getValues();

  for (var i = 1; i < vA.length; ++i) {

    if (Number(vA[i][5]) > 0.5) {
      vA[i][6] = 'Flag';
      //change value of array element
    }
  }

  rg.setValues(vA);
  //set changed values to source range
}

Редактировать

Это проверяет столбец F и вносит изменения в столбец G. Он не перезапишет формулы в столбце F, но перезапишет все формулы в столбце G.

function test() {

  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet1');

  var lastRow = sh.getLastRow();

  var checkRg = sh.getRange('F2:F' + lastRow);
  var flagRg = sh.getRange('G2:G' + lastRow);

  var checkVa = checkRg.getValues();
  var flagVa = flagRg.getValues();

  for (var i = 0; i < checkVa.length; ++i) {

    if (Number(checkVa[i][0]) > 0.5) {
      flagVa[i][0] = 'Flag';
      //change value of array element
    }
  }

  flagRg.setValues(flagVa);
  //set changed values to source range
}
0 голосов
/ 21 января 2019

Не уверен, что находится в столбцах от A до F и выше G.

for(var i=1;i<vA.length;i++) {
  if(Number(vA[i][5])>0.5) vA[i][6] = 'Flag';
}
SpreadsheetApp.getActiveSheet().getDataRange.setValues(vA);

Или если вы хотите заменить только G.

var g = [];
for(var i=1;i<vA.length;i++) {
  g[i-1] = [vA[i][6]]; // Notice its an array
  if(Number(vA[i][5])>0.5) g[i-1] = ['Flag']; // Notice an array again
}
SpreadsheetApp.getActiveSheet().getRange(2,7,g.length,1).setValues(g);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...