Сценарии Google выполняют поиск в одном столбце и редактируют строку в зависимости от результата. - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать кнопку сценария, которая будет перебирать все строки и просто вычитать ячейку G из ячейки E, если G имеет числовое значение, затем очищать ячейку G.

У меня проблемы спытаясь получить только столбец G, чтобы увидеть, содержит ли он числовое значение, обычно столбец G будет пустым

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

function calculate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rangeData = sheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange("G1:G300");
var substring = "";

  // Get array of values in the search Range
  var rangeValues = searchRange.getValues();
  // Loop through array and if condition met, add relevant
  // background color.
  for ( i = 0; i < lastColumn - 1; i++){
    for ( j = 0 ; j < lastRow - 1; j++){

      if(rangeValues[j][i] != ""){
        sheet.getRange(j+1,i+7).setBackground("#cc4125");
      }; 
    };
  };
};

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

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

function calculate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var sValues = sheet.getDataRange().getValues();

  // E = 5, in array it is 4
  // G = 7, in array it is 6

  // Loop through array and if condition met, do stuff
  sValues.forEach(function(row, i) {
    if (row[6] != '') {
      row[4] = row[4] - row[6];
      row[6] = '';
      sheet.getRange(i + 1, 7).setBackground('#cc4125');
    }
  });

  sheet.getDataRange().setValues(sValues);
}
0 голосов
/ 17 апреля 2019

Спасибо ra89fi, вы дали мне 99% того, что мне было нужно, вот конечный результат, который сработал

function calculate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var sValues = sheet.getDataRange().getValues();

  // E = 5, in array it is 4
  // G = 7, in array it is 6

  // Loop through array and if condition met, do stuff
  sValues.forEach(function(row, i) {
    if (row[6] != '') {
      row[4] = row[4] - row[6];
      row[6] = '';
      sheet.getRange(i + 1, 5).getCell(1,1).setValue(row[4]);
      sheet.getRange(i + 1, 7).getCell(1,1).setValue('');
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...