Когда вы используете метод 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);
В результате будут обновлены только не пустые значения, а пустые ячейки останутся без изменений.