Как в apps script при вставке через setvalues Не перезаписывать данные ячейки, если в массиве значение пусто?

Когда вы используете метод setValues в Apps Script для вставки значения в диапазон ячеек, вы не можете управлять перезаписью данных ячеек внутри этого диапазона. Однако вы можете применить проверку на пустоту входного массива данных и обновить только ячейки, содержимое которых не является пустым.

Для этого вы можете использовать метод getRange для получения диапазона ячеек, которые вам нужно обновить, а затем использовать метод getValue для проверки каждой ячейки на пустоту. Если ячейка пуста, вы пропускаете ее и переходите к следующей. Если ячейка не пуста, вы обновляете ее значение с помощью метода setValue.

Пример кода:

function updateData(values) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var range = sheet.getRange('A1:C3'); // здесь вы указываете диапазон ячеек, которые необходимо обновить
  
  var data = range.getValues(); // получаем значения текущего диапазона ячеек
  
  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < data[i].length; j++) {
      if (values[i][j] !== '') { // проверяем, не пустое ли значение в массиве
        data[i][j] = values[i][j]; // обновляем значение ячейки
      }
    }
  }
  
  range.setValues(data); // записываем обновленные значения обратно в диапазон ячеек
}

В этом примере предполагается, что у вас есть таблица с 3 столбцами и 3 строками, и вы хотите обновить значения в этой таблице с помощью массива values. Если значение в массиве values для конкретной ячейки пусто, то значение в таблице не будет изменено.

Вы можете вызвать эту функцию, передав нужный вам массив данных для обновления:

var newData = [[1, '', 3], ['', 5, ''], [7, 8, '']];
updateData(newData);

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