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

В качестве примера возьмём простенький код:
function myFunction() {
  let ss = SpreadsheetApp.getActive();
  let sheet = ss.getSheetByName('test')
  let arr = [[1,2,3,4,5,"",7]]
  let range = sheet.getRange("A1:G1");
  range.setValues(arr);
}


Предположим, что в диапазоне A1:G1 уже хранятся данные . Я хочу из переписать на данные из массива arr. НО (!), если в массиве есть пустое значение, то им НЕ перезаписываем соответствующую ячейку из массива.

Т.е. что бы в из такого:
64bf8595e3d8a362893064.png

Получить это:
64bf85c898911302448614.png
...где ячейка F1 не перезаписалась, потому что в массива arr значение для этой ячейки — ""

Подскажите пожалуйста как это можно реализовать?
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
1) Получить значения
2) Заменить пустые значения в заменяемых данных на старые значения
3) Записать значения
oldValues = range.getValues();
arr = arr.map((row,ri)=>row.map((val, ci)=>val===undefined?oldValues[ri][ci]:val));
range.setValues(arr);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@iljaGolubev
// range.setValues(arr);
arr.forEach(
    (val,idx) => {
        if (val!=='') range.getCell(1, idx+1).setValue(val)
    }
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы